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っぽいな・・・