null vs nullptr

0

witam,
chciałbym się dowiedzieć czemu większość osób mówi żeby zamienić null na nullptr
jaka jest różnica między nimi?

1

@fasadin od jakiej wersji boosta?
nullptr jest w standardowej bibliotece od C++11

Z ciekawości: dlaczego dodałeś tag C? Co nullptr ma do C?

6

Jedno i drugie działa tak samo, do tego samego służy, jest tak samo szybkie/wolne.

nullptr w pewnych rzadkich w praktyce okolicznościach pozwala uniknąć błędu który można niechcący popełnić używając NULL. (błąd można też naprawić w inny sposób niż przez użycie nullptr).

void foo(void *bar);
void foo(int x);

Wywołanie foo(NULL) spowoduje wykonanie drugiej funkcji zamiast pierwszej, bo NULL to 0, a 0 to int. Dlatego wprowadzono nullptr, który nigdy nie jest intem.

NULL w C++ istnieje bo pochodzi z języka C (początkowo C++ był traktowany jako rozszerzenie C). w języku C nie ma problemu z NULL bo nie ma przeładowywania funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1