nullptr, литерал указателя (с C++11)
Синтаксис
nullptr | (с C++11) |
Объяснение
Ключевое слово nullptr обозначает литерал указателя. Это справочное значение типа 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:2023):
- 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 (typedef) |
Документация C для nullptr |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/language/nullptr