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
|