C++プログラマ キャスブログ
[C++11]NULLとはおさらばnullptr 2014年11月22日02:09:11
C++11からnullptr(無効なポインタ)が型として採用されました。 やったー。これは積極的に使うべきです。 これまではマクロが定義されていただけなので飛躍的な進歩と言えます。 #define NULL 0 個人的に一番大きなメリットはNULLを使う場合に必要だった 何かしらのヘッダーファイルのインクルードが不要になることです。
1 2 3 4 #include <cstdlib> // NULLの場合宣言があるヘッダーが無いとコンパイルエラーになる。 int* p1 = NULL; int* p2 = nullptr; // nullptrの場合ヘッダーファイルは不要
あとは型として定義づけが行われたおかげで関数・メソッドの オーバーロードもやりやすくなりました。 普通の人はこっちのメリットが主でしょうね(汗
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <cstdio> // printfを使うために必要なヘッダー void hoge( int i ) { printf( "A" ); } void hoge( int* i ) { printf( "B" ); } // NULLは0のマクロなのでAが出力される hoge( NULL ); // nullptrは型なのでオーバーロードが正しく動作しBが出力される hoge( nullptr );
余談ですが、筆者はキーワード名が気に入りません他の言語ではnullというキーワードを 使うことが多いので、C++もnullが良かったです... C++/CLIから逆輸入ということなので政治的な理由なのでしょうが無念です。 nilとかいうキーワードを採用していたC#の前身や某組み込み言語も…いえ何でもありません
カテゴリ

リンク
C++11のコードを
試すのに便利です。
http://ideone.com/

同人ゲームを
製作している知人
sorcery

にほんブログ村 IT技術ブログ C/C++へ
にほんブログ村


C++ ブログランキングへ

ゲームダウンロード DefenceTri