可能重复:
你对C++中的指针使用NULL还是0(零)?
在C++中使用NULL或仅使用0值是个好主意吗?
在使用C++调用的C代码中是否存在使用NULL的特殊情况?像SDL?
Tar*_*ula 38
在C++中,NULL扩展为0或0L.请参阅Stroustrup的评论:
我应该使用NULL还是0?在C++中,NULL的定义是0,因此只有美学差异.我更喜欢避免宏,所以我使用0. NULL的另一个问题是人们有时会错误地认为它与0不同和/或不是整数.在预标准代码中,NULL有时被定义为不适合的东西,因此必须/必须避免.这些日子不太常见.
如果必须命名空指针,则将其命名为nullptr; 这就是它将在C++ 0x中调用的内容.然后,"nullptr"将是一个关键字.
小智 14
C++中NULL的缺点是它是0的定义.这是一个可以静默转换为指针,bool值,float/double或int的值.
这不是非常类型安全的,并且导致了我工作的应用程序中的实际错误.
考虑一下:
void Foo(int i);
void Foo(Bar* b);
void Foo(bool b);
main()
{
Foo(0);
Foo(NULL); // same as Foo(0)
}
Run Code Online (Sandbox Code Playgroud)
C++ 11定义了一个nullptr可转换为空指针但不能转换为其他标量的指针.所有现代C++编译器都支持这一点,包括2008年的VC++.在旧版本的GCC中有一个类似的功能,但后来被调用__null.
| 归档时间: |
|
| 查看次数: |
114015 次 |
| 最近记录: |