nullptr, литерал указателя (начиная с C++11)
Материал из cppreference.com
Синтаксис
nullptr
|
(начиная с C++11) | ||||||||
Объяснение
Ключевое слово 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 << "Вызвана функция g\n";
}
int main()
{
g(nullptr); // Успех
g(NULL); // Успех
g(0); // Успех
g(clone(nullptr)); // Успех
// g(clone(NULL)); // ОШИБКА: нелитеральный ноль не может быть константой нулевого указателя
// g(clone(0)); // ОШИБКА: нелитеральный ноль не может быть константой нулевого указателя
}
Вывод:
Вызвана функция g
Вызвана функция g
Вызвана функция g
Вызвана функция g
Ссылки
- 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 (определение типа) |
Документация C по nullptr
| |