我目前正在阅读一本关于C++的书,在本书中,作者解释说使用常量而不是NULL宏更好,但没有真正解释为什么或给出任何优点或缺点.
那么为什么最好使用:
const int NULL = 0;
int *ptr = NULL;
Run Code Online (Sandbox Code Playgroud)
代替:
int *ptr = NULL;
Run Code Online (Sandbox Code Playgroud)
唯一的解释是NULL宏不是类型安全的.
Bat*_*eba 38
一切都过时了.
请nullptr改用.对于没有指向任何东西的指针,这是一个特殊值.它甚至有自己的类型,std::nullptr_t.
不能保证地址0x0对应于"未初始化"指针值,但请注意,文字0保证转换为空指针值.
Man*_*lva 22
如果您使用的是C++ 11,那么建议使用它nullptr而不是NULL.
下面是Bjarne Stroustrup的C++编程语言中的几行
- 在较旧的代码中,通常使用0或NULL而不是nullptr(第7.2.2节).但是,使用nullptr消除了整数(例如0或NULL)和指针(例如nullptr)之间的潜在混淆.
- 在不同的实现中,NULL的定义存在差异; 例如,NULL可能是0或0L.在C中,NULL通常是(void*)0,这使得它在C++(第7.2.1节)中是非法的:
- 使用nullptr使代码比替代方案更具可读性,并避免在函数重载以接受指针或整数时可能产生的混淆
我希望这能帮助你理解.
| 归档时间: |
|
| 查看次数: |
2938 次 |
| 最近记录: |