私は C++ キャスト演算子を見直していますが、次の疑問があります。
ポリモーフィック クラス用
- 使用する必要があります
polymorphic_cast
static_cast
ダウンキャストは未定義の動作を引き起こす可能性があるため、絶対に使用しないでください。とにかく、コードはこのケースをコンパイルします。
今、私が次の状況にあるとします
class CBase{};
class CDerived : public CBase{};
int main( int argc, char** argv ){
CBase* p = new CDerived();
//.. do something
CDerived*pd = static_cast<CDerived*>( p );
}
ポリモーフィズムが含まれていないため、使用polymorphic_cast
しません。コードはコンパイルさえしません。
ある時点で、誰かvirtual
が継承ツリーにいくつかの関数を導入し、私が今それを認識しているため、危険にさらされている場合: どうすればそれを実現できますか?
リスクを回避するために移動する必要polymorphic_cast
がありますが、コードは通知なしで引き続きコンパイルされます。
そのような変化を認識したり、これらのケースを防ぐために何をしますか?
ありがとうAFG