nullptr, литерал нулевого указателя (начиная с C++11)
Синтаксис
nullptr |
Пояснение
Ключевое слово nullptr обозначает литерал нулевого указателя. Это prvalue типа std::nullptr_t. Существуют неявные преобразования из nullptr в значение нулевого указателя любого типа указателя, а также любого типа указателя на член. Подобные преобразования существуют и для любой константы нулевого указателя, к которым относятся значения типа std::nullptr_t, а также макрос NULL.
Ключевые слова
Пример
Демонстрируется, что nullptr сохраняет значение константы нулевого указателя, даже если перестаёт быть литералом.
#include <cstddef>
#include <iostream>
template<class T>
constexpr T clone(const T& t)
{
return t;
}
void g(int*)
{
std::cout << "Function g called\n";
}
int main()
{
g(nullptr); // Fine
g(NULL); // Fine
g(0); // Fine
g(clone(nullptr)); // Fine
// g(clone(NULL)); // ERROR: non-literal zero cannot be a null pointer constant
// g(clone(0)); // ERROR: non-literal zero cannot be a null pointer constant
}
Вывод:
Function g called Function g called Function g called Function g called
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
- 7.3.12 Преобразования указателей [conv.ptr]
- Стандарт C++20 (ISO/IEC 14882:2020):
- 7.3.12 Преобразования указателей [conv.ptr]
- Стандарт C++17 (ISO/IEC 14882:2017):
- 7.11 Преобразования указателей [conv.ptr]
- Стандарт C++14 (ISO/IEC 14882:2014):
- 4.10 Преобразования указателей [conv.ptr]
- Стандарт C++11 (ISO/IEC 14882:2011):
- 4.10 Преобразования указателей [conv.ptr]
См. также
| константа нулевого указателя, определяемая реализацией (макроконстанта) |
|
|
(C++11) | тип литерала нулевого указателя nullptr (псевдоним типа) |
Документация по C для nullptr |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/language/nullptr