【发布时间】:2011-12-25 10:58:03
【问题描述】:
以下代码(取自from here):
int* ptr = int();
在 Visual C++ 中编译并对指针进行值初始化。
这怎么可能?我的意思是int() 产生一个int 类型的对象,我不能将int 分配给一个指针。
上面的代码怎么不违法?
【问题讨论】:
-
不是一个答案,而是一个好问题!我从来没有见过这样的事情。
-
由于原语在 C++ 中有一个“构造函数”,
int()产生int的值构造值(我认为这是 C++03 指定的东西)和 @987654328 的默认值@ 是0。这相当于int *ptr = 0; -
@EmanuelEy:不,任何零值整数常量都可以用作空指针常量,无论指针实际是如何实现的。
-
@MooingDuck:我没有说
NULL可能是一个非零值。我说它可以是任何零值整数常量(包括int())。 -
@DanielPryden 这是我以前不知道的“对象”这个词的用法。
标签: c++ visual-c++ pointers initialization built-in-types