これで、C ++ 11に多くの新機能が追加されました。(少なくとも私にとって)面白くて混乱するのは、新しいnullptrです。
まあ、厄介なマクロはもう必要ありませんNULL。
int* x = nullptr;
myclass* obj = nullptr;
それでも、nullptr動作がわかりません。たとえば、Wikipediaの記事では次のように述べています。
C ++ 11では、これを修正するために、識別されたnullポインター定数として機能する新しいキーワード nullptrを導入しています。これはnullptr_t型であり、暗黙的に変換可能であり、任意のポインター型またはメンバーへのポインター型と比較できます。boolを除いて、暗黙的に変換したり、整数型と比較したりすることはできません。
キーワードと型のインスタンスはどうですか?
また、nullptr古き良きより優れている別の例(ウィキペディア以外のもの)はあり0ますか?
nullptr_t、唯一つのメンバーを持つことが保証nullptr?したがって、関数がを返した場合、関数nullptr_tの本文に関係なく、コンパイラはどの値が返されるかをすでに知っていますか?
std::nullptr_tはインスタンス化できますがnullptr、型がとして定義されているため、すべてのインスタンスはと同じになりますtypedef decltype(nullptr) nullptr_t。この型が存在する主な理由はnullptr、必要に応じて、関数を特にオーバーロードしてcatchできるようにするためです。例については、こちらをご覧ください。
nullptrC ++ / CLIのマネージハンドルのnull参照を表すためにも使用されます。