比方说,在C++ 11中,我做到了
auto a = 4;
Run Code Online (Sandbox Code Playgroud)
会a是什么?的int(因为我经常读),一个unsigned int,一个short,一个long,一个size_t,一个char?是否auto始终定义了行为,它是否始终是每个编译器和每个体系结构上完全相同的类型(具有完全相同的位长!)?
另一个例子:
class A{};
class B:A{};
auto x = new B();
Run Code Online (Sandbox Code Playgroud)
会不会x是类型*B或类型的*A?每个编译器和平台上始终相同?两者都是完全合法的,编译器如何知道我打算使用哪一个?
是否有auto行为的确切列表?
Mik*_*our 10
会
a是什么?
int,因为那是那种类型4.
会不会
x是类型*B或类型的*A?
B*,因为那是那种类型new B().
是否有
auto行为的确切列表?
通常,它是初始化器的类型; 除非这是一个引用类型,在这种情况下它是底层对象类型.如评论中所提到的,对于像阵列这样的不寻常类型还有一些其他皱纹.
在每个编译器和每个架构上它总是完全相同的类型(具有完全相同的位长!)?
在大多数情况下,初始化程序具有明确定义的类型,并确定由此推导出的类型auto.
如果初始化器是整数文字,那么类型可能取决于平台; 例如,1000000可能int在32位平台上,但long在16位平台上.
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |