◐ Shell
clean mode source ↗

nullptr, литерал указателя (начиная с C++11) — cppreference.com

Материал из cppreference.com

Синтаксис

nullptr (начиная с C++11)

Объяснение

Ключевое слово nullptr обозначает литерал указателя. Это prvalue типа std::nullptr_t. Существуют неявные преобразования из nullptr в значение нулевого указателя любого типа указателя и любого указателя на тип элемента. Подобные преобразования существуют для любой константы нулевого указателя, которая включает значения типа std::nullptr_t, а также макрос NULL.

Ключевые слова

nullptr

Пример

Демонстрирует, что 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]

Смотрите также