我对两个概念感到困惑,即" auto" C ++ 11中引入的关键字和类型转换(dynamic_cast / static_cast)。
" auto" C ++ 11中的关键字在内部使用类型转换?
答案 0 :(得分:1)
让我们使用示例
保持简单unsigned short s = 65535;
auto positive = s;
auto negative = (short) s;
std::cout << positive << std::endl; // prints 65535
std::cout << negative << std::endl; // prints -1
在此代码中:
unsigned short
655355
变量
positive
,然后让编译器从其初始化程序中推断出其类型(请参阅link)。因此,positive
将为unsigned short
,因为其初始化程序具有该类型。negative
的类型将被推断为short
,因为您将s
的类型从unsigned short
转换为short
请注意,positive
和negative
变量都将保持相同的值,十六进制为0xffff
,但由于它们的类型,它们会以不同的方式进行解释。
因此,汽车和铸造之间没有区别,就好像它们具有可比性,它们是不同的概念。
auto
会根据某些规则推断出类型或变量我建议您阅读Scott Meyers的 Effective Modern C ++ ,了解auto
的工作原理。