РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
55 of 815 menu

Значение nullptr

Значение nullptr представляет собой константу нулевого указателя, которая имеет специальный тип std::nullptr_t. Оно было введено в стандарте C++11 для замены макроса NULL и целочисленного литерала 0, используемых для обозначения нулевого указателя. Главное преимущество nullptr заключается в типобезопасности: он не может быть неявно преобразован к целочисленным типам, кроме bool, что исключает двусмысленность при перегрузке функций. Синтаксически nullptr является ключевым словом и не требует включения каких-либо заголовочных файлов, хотя тип std::nullptr_t определён в заголовке <cstddef>.

Синтаксис

nullptr

Пример

Давайте рассмотрим простой пример, в котором указателю присваивается значение nullptr, а затем проверяется, является ли он нулевым:

#include <iostream> using namespace std; int main() { int* ptr = nullptr; if (ptr == nullptr) { cout << "ptr is null" << endl; } return 0; }

Результат выполнения кода:

"ptr is null"

Пример

Давайте рассмотрим пример, демонстрирующий типобезопасность nullptr при перегрузке функций. В отличие от NULL, который может быть преобразован как к указателю, так и к целому числу, nullptr однозначно выбирает перегрузку с указателем:

#include <iostream> using namespace std; void func(int x) { cout << "Integer: " << x << endl; } void func(int* x) { cout << "Pointer: " << x << endl; } int main() { func(nullptr); return 0; }

Результат выполнения кода:

"Pointer: 0"

Пример

Давайте рассмотрим пример использования nullptr с умными указателями, где он также служит для обозначения отсутствия объекта:

#include <iostream> #include <memory> using namespace std; int main() { shared_ptr<int> sp = nullptr; if (!sp) { cout << "shared_ptr is null" << endl; } sp = make_shared<int>(42); cout << *sp << endl; return 0; }

Результат выполнения кода:

"shared_ptr is null" 42

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

  • тип nullptr_t,
    который является типом для nullptr
  • тип pointer,
    который хранит адрес объекта в памяти
  • тип bool,
    который принимает значение true или false
  • тип void,
    который обозначает отсутствие типа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить