代码点读机 / C++ / dynamic_cast

dynamic_cast C++ · 关键字

运行时向下类型转换运算符,只能用于含虚函数的多态类型;转换失败时指针返回 nullptr,引用抛 std::bad_cast。

怎么用

dynamic_cast<目标类型>(表达式)

小例子

class 动物 { public: virtual ~动物(){} };
class 猫 : public 动物 {};
动物* a = new 猫;
猫* c = dynamic_cast<猫*>(a);
std::cout << (c ? "是猫" : "不是");

运行结果

是猫

提醒:用于引用时会抛异常;非多态类型只能用 static_cast

官方文档:https://en.cppreference.com/w/cpp/language/dynamic_cast

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← C++全部词条