【发布时间】:2016-09-18 10:01:36
【问题描述】:
在下面的代码中,我无法理解auto 是如何知道右手边的东西是指针:
int x = 100;
int *ptr = & x;
auto test = ptr;
std::cout<<*test<<std::endl;
因为根据我的理解,指针包含的地址只不过是unsigned int,所以auto 如何推断它是指针而不是unsigned int?
【问题讨论】:
-
指针包含的地址不过是无符号整数。那是错误的。地址不一定是无符号整数。
-
使用 auto 声明的变量的类型是从它的初始化器推导出来的。就是这样。
-
所以这里的初始值设定项是 ptr 所以它怎么知道它必须是指针而不是其他类型
-
auto在编译期间被评估,not 在运行时被评估,所以“指针包含”的值没有区别(不确定这个表达式甚至意味着什么) .