Tại sao chúng ta nên sử dụng nullptr thay vì NULL

""

Trong C++11 xuất hiện một từ khóa (keyword) mới là nullptr. nullptr được sử dụng để chỉ một con trỏ là null (null pointer). Trước đây chúng ta hay sử dụng NULL cho mục đích này (kế thừa từ C ^^) Tuy nhiên NULL về bản chất chỉ là một số nguyên có giá trị = 0 (zero integer).

Vậy tại sao ta nên sử dụng nullptr thay cho NULL.

int f(int value)
{
    // ...
}

int f(foo* parameter)
{
    // ...
}

int main()
{
    return f(NULL); // which overload are we calling?
}

Trong trường hợp trên, hàm được gọi trong hàm main() sẽ là hàm f(int value), bởi vì đơn giản NULL ko phải là một con trỏ mà chỉ là một số nguyên. Nêu developer chủ định muốn gọi hàm overload f(foo* parameter) thì cần sử dụng nullptr

int main()
{
    return f(nullptr);
}

Tóm lại như sau

"ptr vs nullptr"

"NULL"

Tham khảo: https://www.moderncplusplus.com/nullptr-vs-null/