c++语言中nullptr
答案是“ C ++中nullptr到底是什么?” 对于有经验的C ++眼睛和那些了解现代C ++关键字的人来说,这将是小菜一碟。 但是nullptr不仅是C ++中的关键字,而且为了解释这一点,我已经写了这篇文章。 但是在开始之前,我们将看到NULL问题,然后我们将深入研究nullptr的简单实现以及nullptr的一些用例。
/!\:最初发布于www.vishalchovatiya.com 。
注意:本文的内容大致相同,您可以在此处 , 此处和nullptr提案(N2431)中找到,但有条理和简化。
为什么我们需要nullptr?
区分整数0(零)(即NULL)和类型指针的实际null。
nullptr与NULL
- NULL为0(零),即,将C样式类型转换为void *的整数常数为零 ,而nullptr是nullptr_t类型的prvalue ,该值是整数常量,其 值为零 。
- 对于那些相信NULL相同的人,即C和C ++中的(void *)0。 我想澄清的是,不是:
NULL-cppreference.com (C ++)
- C ++要求将宏NULL定义为值为0的整数常量表达式。因此,与C语言不同,在C ++标准库中不能将NULL定义为(void *)0。
NULL问题
1️⃣ 隐式转换
char *str = NULL ; // Implicit conversion from void * to char *
int i = NULL ; // OK, but &#