c++ - "int* ptr = int()"值初始化如何不非法?

标签 c++ visual-c++ pointers initialization built-in-types

以下代码(取 from here ):

int* ptr = int();

在 Visual C++ 中编译并对指针进行值初始化。

这怎么可能?我的意思是 int() 产生一个 int 类型的对象,我不能将 int 分配给指针。

上面的代码怎么不违法?

最佳答案

int() 是一个值为 0 的常量表达式,因此它是生成空指针常量的有效方法。归根结底,这只是 int *ptr = NULL;

的说法略有不同

关于c++ - "int* ptr = int()"值初始化如何不非法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067897/

相关文章:

c++ - 从文件加载后,顶点着色器和片段着色器均未编译

c++ - 我真的可以为每个 Type 声明创建一个全局变量吗?

c++ - 在 c++/MFC 中读取 key 并从 .ini 文件中获取部分

c++ - 这是一个 VC++2010 编译器错误吗?

c++ - 为什么 C++ 没有指向成员函数类型的指针?

c++ - 指针/动态内存分配函数错误(Xcode 到 Linux)

c++ - x = &(*variable) 与 x = variable 有何不同?

c++ - 错误 : use of deleted function when I try to use a reference

c# - 如何将 vc++(例如:IListPtr)指针转换为 std::list?

c++ - 在基于范围的 for 循环中从 std::vector<Object> 获取指向对象的指针