KisaragiEffective.github.io

Yeet.

View on GitHub

dynamic_castと代入式

    Base* b1 = new Base;
    if(Derived* d = dynamic_cast<Derived*>(b1))
    {
        std::cout << "downcast from b1 to d successful\n";
        d->name(); // 呼んでも安全です。
    }

引用: https://ja.cppreference.com/w/cpp/language/dynamic_cast

ポインタ型にキャストするときはif文の判定条件の中でキャスト先の型を持つ変数を宣言することで、 キャストが失敗したときは(dynamic_castがnullptrを返し、nullptrはfalsyな値 (…?) なので)ifごとスキップされる。

こうしてみるとC#のusingっぽいな・・・