私は現在、私には奇妙に見えるサードパーティのC++コードを使っています(私はC++ 11から始めました)。私はあなたが、例えばポインタをキャストすることができます知っているC++のSomeType *にNULLをキャストするのはどうですか?
SomeClass* someClassPtr = static_cast<SomeClass*>(NULL);
:困惑私を残し、多くのことの一つは、いくつかのポインタ型にNULL
からstatic_cast
の多くのインスタンスであります基本クラスのポインタから派生したクラスのポインタへと継承されますが、ここでは継承は全くありません。私の知る限り見ることができるように、これは十分なはずです:
SomeClass* someClassPtr = NULL;
しかしNULL
が特定のポインタ型にキャストされません。このコードの唯一の例は、ベクター及び他のコンテナでのポインタです:
SomeOtherClass.vecOfSomeClassPtr[i] = NULL;
だから私の質問は以下のとおりです。
- は、この単純に古いスタイル(あるいはCスタイル)です
nullptr
があった前からのコード? - 継承を使って作業するときにダウン/アップキャスト以外のものに必要なのは、
NULL
です。 - また、何か完全に欠けていますか?
そして場合には私がこれまでに間違ったそれをもらっていない:
私が最初にそれが何かを破るかどうかを確認するために、NULL
でstatic_cast<type*>(NULL)
のすべてのインスタンスを置き換え、後でnullptr
:いいえ。 コンパイラは抗議しておらず、プログラムは期待どおりに機能しているようです。 は、しかし、私はそう、ポインタがトリッキー少しできそこないことができる知っている:
- 私はおそらく
nullptr
の使用についてどのような落とし穴を見逃したのか?
PS:はい、私は検索を使用しました。はい、Cコードで同様の質問がありました。 これはC++のコードなので、何かを仮定するのではなく、確かに知りたかったのです。
質問には多くの質問があります。 – user2079303
私は将来を考えています。 – Floriel