空指针
特性1:空指针nullptr
1、背景
在C语言中NULL
其实是对(void*)0
(也就是void*
型强制0转换),在c++
中为0。从c
到C++
中对语言的类型要求更加严格,c++
中==不允许void*
类别的变量隐式转换为其他类型的指针==。
1 | void* ptr3=NULL; |
2、存在问题
因此C++中为了兼容之前的C语法,将NULL
定义为0,那么会存在如下==歧义问题==:
1 | void f(int n){ |
3、解决方案
将NULL
改为nullptr
,nullptr
并不是$0$,而是专门为指针类型定义的空指针类型,因此==可以自动进行类型转换==。
1 | void f(int n){ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ò.ó!
评论