nullptr

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

nullptr — ключевое слово, введенное в C 11 для описания константы нулевого указателя. Её тип — std::nullptr_t.

nullptr является r-value[англ.] литералом[1].

До введения nullptr для обнуления указателей использовался макрос NULL со значением 0 — целым типом. Это вызывало проблемы (например, при перегрузке функций). Тип nullptr — std::nullptr_t, что решает эти проблемы. Существуют неявные преобразования nullptr к нулевому указателю любого типа и к bool (со значением false), но не к целочисленных типам[2].

В целях обеспечения обратной совместимости константа 0 также может использоваться в качестве нулевого указателя.

void foo(char *);
void foo(int);

char *pc = nullptr;     // верно
int  *pi = nullptr;     // верно
bool   b = nullptr;     // верно. b = false.
int    i = nullptr;     // ошибка

foo(nullptr);           // вызывает foo(char *), а не foo(int);

Примечания

[править | править код]
  1. cppreference.com: nullptr. https://ravesli.com (Обновл. 31 Дек 2019). Дата обращения: 14 ноября 2022. Архивировано 14 ноября 2022 года.
  2. Renzo. Десять возможностей C 11, которые должен использовать каждый C разработчик. habr (11 июня 2013). Дата обращения: 10 января 2020. Архивировано 2 апреля 2022 года.