nullptr

C++11からは、ポインタへのNULLのセットは、nullptrを使うことが推奨されている。

nullptr - cpprefjp C++日本語リファレンス

nullptr.cppで、

intとconst char *を引数とするfuncがある。

値、指定された文字列をそれぞれ出力するだけ。

  // 0とNULLの場合.
  func(0); // 0を出力.
  func(NULL); // NULLを出力.(この環境では, 呼び出しが曖昧ということでコンパイルエラーになった.)
  func(nullptr); // C++11ではnullptrを推奨.

こうすると、

$ vi nullptr.cpp 
$ g++ nullptr.cpp -o nullptr -std=c++11
nullptr.cpp: 関数 ‘int main()’ 内:
nullptr.cpp:20:12: エラー: オーバーロードされている ‘func(NULL)’ の呼び出しが曖昧です
   func(NULL); // NULLを出力.(この環境では, 呼び出しが曖昧ということでコンパイルエラーになった.)
            ^
nullptr.cpp:5:6: 備考: candidate: void func(int)
 void func(int val); // オーバーロード関数func(int val)
      ^~~~
nullptr.cpp:6:6: 備考: candidate: void func(const char*)
 void func(const char *ptr); // オーバーロード関数func(const char *ptr)
      ^~~~
$ 

このように曖昧なのでコンパイルエラー。

こうすると、

$ vi nullptr.cpp 
$ g++ nullptr.cpp -o nullptr -std=c++11
$ ./nullptr 
val = 10
ptr = ABC

だったり、

val = 0
ptr = $

だったり、コンパイルして実行できる。

Sample/cpp/nullptr/nullptr/src/nullptr at master · bg1bgst333/Sample · GitHub