これで、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できるようにするためです。例については、こちらをご覧ください。
nullptr
C ++ / CLIのマネージハンドルのnull参照を表すためにも使用されます。