変数のchar *のPTRを考えてみましょう:
In c++11, does dynamic_cast return nullptr or 0?
私はdynamic_castをした結果は、その特定の型のNULL値ができることを学びました。それは(驚くことではない)char *です。 しかし、nullptrの型は特別な型nullptr_tです。したがって、我々が のようなものを書くと、ptr = nullptrのようなものを書いてください。いくつかの技術的なことが起こらなければなりません。
nullptrは暗黙的にchar *に変換されなければなりません。この の変換結果がptrの新しい値として設定されます。 char * のnull値は、nullptrをchar *に変換した結果です。概念的には、それはまだ ですが、異なるタイプ(char *)のnullptrです。このnull値は、int *またはstring *または他のポインタ 型のnull値とは異なる です。これらのヌル値はnullptr(または0)の と考える傾向がありますが、それぞれが実際には異なるタイプの別個の値です。 ( の方法では、==を使って比較すると同じ変換が行われます)。
異なるヌルポインタの種類は何ですか?それは本当に重要ですか?任意のチェック(何かがヌルかどうかを確認したいところ)で、単に==がstd :: nullptrになっているかどうかをチェックするだけで十分ですか?
'異なるヌルポインタ型は何ですか?あなたの見積もりではポインタ型なので、意味がありません。すべてのポインタ型にはNULL値があります。 – deviantfan
'単純に== std :: nullptr'をチェックします。私が何かを見逃していない限り、C++の型は' == 'と直接比較できません。 'char *'または 'int *'は決してnullptr_tと同じではありません – deviantfan
'nullptr'はキーワードなので' std'名前空間にはありません。その型だけ、 'std :: nullptr_t'が名前空間にあります。 –