为什么c++既有NULL 又有 nullptr?有什么不一样吗?如果一样,为什么要有两个名字?

来源:9-3 static和单例模式的实现

TokugawaNakashima

2022-01-04

为什么c++既有NULL 又有 nullptr?有什么不一样吗?如果一样,为什么要有两个名字?

写回答

1回答

quickzhao

2022-01-05

在C++中,NULL是一个宏,其实质是0;而nullptr是从C++11开始引入的关键字。

在C语言中,NULL的定义为(void *)0,因为C语言可以隐式转换;但在C++中,类型转换时可能会报错。C++11加入了nullptr,可以保证在任何情况下都代表空指针,所以C++中最好使用nullptr。 

PS:这样的问题之前有同学应该问过,请在问问题之前先查询下是否一些有类似的问题及回答。

1
1
TokugawaNakashima
非常感谢!
2022-01-08
共1条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程