C++ 中的 'auto' 是否识别自定义数据类型?
Does 'auto' in C++ recognize custom data types?
我想知道我是否可以自己制作一个 class,然后这样做:
class my{
/*some things*/
}myobj;
然后
auto newobj = myobj;
auto
能认出这个myobj吗?它也适用于结构吗?
答案是肯定的,因为您可能已经检查过编译它。规则与模板参数推导相同。您始终可以检查在 IDE 中为给定的自动变量推导出什么类型,或者为此使用编译器错误,例如:
class my{
/*some things*/
}myobj;
template<typename T> class TD;
int main()
{
auto newobj = myobj;
TD<decltype(newobj)> td;
}
产生错误:
main.cpp:14:26: error: aggregate 'TD<my> td' has incomplete type and cannot be defined
TD<decltype(newobj)> td;
为您提供的信息表明 newobj
的类型为 my
我想知道我是否可以自己制作一个 class,然后这样做:
class my{
/*some things*/
}myobj;
然后
auto newobj = myobj;
auto
能认出这个myobj吗?它也适用于结构吗?
答案是肯定的,因为您可能已经检查过编译它。规则与模板参数推导相同。您始终可以检查在 IDE 中为给定的自动变量推导出什么类型,或者为此使用编译器错误,例如:
class my{
/*some things*/
}myobj;
template<typename T> class TD;
int main()
{
auto newobj = myobj;
TD<decltype(newobj)> td;
}
产生错误:
main.cpp:14:26: error: aggregate 'TD<my> td' has incomplete type and cannot be defined
TD<decltype(newobj)> td;
为您提供的信息表明 newobj
的类型为 my