const 变量的地址,C++

Edu*_*yan 2 c++ constants

最近我正在重读 Scott Meyers 的《Effective C++》(第三版)。根据 Meyers 的说法:
\n“此外,虽然好的编译器不会\xe2\x80\x99t 为整型的 const 对象设置\naside 存储(除非你创建\n指针或对该对象的引用),但草率的编译器可能会,并且你可能\n不愿意为此类对象留出内存。”
\n 在我的代码中,我可以打印 const 变量的地址,但我尚未在其上创建指针或引用。我使用 Visual Studio 2012。

\n\n
int main()\n{\n    const int x = 8;\n    std::cout<<x<<" "<<&x<<std::endl;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出为:
\n8 0015F9F4

\n\n

有人可以解释我的书和我的代码之间的不匹配吗?还是我有什么地方搞错了?

\n

Seb*_*edl 5

通过对变量使用取址运算符,您实际上是在创建一个指针。指针是一个临时对象,而不是声明的变量,但它确实存在。

此外,还有一个指针类型的声明变量指向您的变量:operator <<您用于打印指针的重载的参数。