nullptr
概要
名前の通り、ヌルポインタを示すキーワードである。C言語から使用されているNULLはキーワードではなくdefine等による定義であり環境で異なる(C++では一般的に #define NULL 0)。 また、C++で使用を推奨している"0"では、コンパイラから見た場合に、整数を意図しているかヌルポインタを意図しているかの判別ができない。そこで、C++11では、新たなキーワードとしてnullptrを定義した。従ってC++においてヌルポインタ(定数)とは、整数値の0、もしくはnullptrのどちらかである。nullptrは、std::nullptr_tという特殊な型として定義されている。
class X{};
f(int);
f(X*);
void fun() {
f(10); //ok f(int)
f(0); //error f(int), f(X*)のどちらか判別不可能
f(nullptr); //ok f(X*)
}