C++では、長年にわたり、NULLポインタを指定するキーワードがないという恥ずかしさがありました。 C++11ではその恥ずかしさが解消されました。C++の強力な型チェックにより,CのNULLマクロは式の中ではほとんど役に立たなくなっています。 #define NULL ((void *)0) // 訳註:C++ では定義が異なる std::string * str = NULL; // void * から std::string * へ自動的にキャストすることはできない void (C::*pmf) () = &C::func; if (pmf == NULL) {} // void * からメンバ関数ポインタへ自動的にキャストすることはできない そのため、C++ では整数定数 0 をヌルポインタを指定するために使う。 これは圧倒的多数の場合で思惑どおり動作するが、曖昧なオーバーロード関数