深圳集团网站开发网站开发公司,wordpress 主题 推荐,win10虚拟机做网站,wordpress外贸网店主题在C中#xff0c;dynamic_cast 是一种用于安全地将指针或引用从一个类类型转换为另一个类类型的运算符。它主要用于在继承层次结构中进行类型转换#xff0c;并在运行时执行类型检查#xff0c;以确保转换的安全性。
dynamic_cast 执行以下操作#xff1a; 1. 它检查 expr…在C中dynamic_cast 是一种用于安全地将指针或引用从一个类类型转换为另一个类类型的运算符。它主要用于在继承层次结构中进行类型转换并在运行时执行类型检查以确保转换的安全性。
dynamic_cast 执行以下操作 1. 它检查 expression 是否指向多态有虚函数的类的有效对象。如果 expression 不是多态类型的指针或引用dynamic_cast 将返回 nullptr对于指针或抛出 std::bad_cast 异常对于引用。 2. 如果 expression 是多态类型的指针或引用则它在运行时执行类型检查来确定对象的实际类型。如果转换是安全的即目标类型是源类型的公有派生类dynamic_cast 将返回指向新类型的指针或引用。 3. 如果 expression 指向的对象的类型不兼容于 new_type则对于指针dynamic_cast 返回 nullptr对于引用它会抛出 std::bad_cast 异常。
#include iostreamclass Base {
public:virtual ~Base() {}
};class Derived : public Base {
public:virtual ~Derived() {}
};int main() {Base* ptr new Derived();// 使用 dynamic_cast 将 Base* 转换为 Derived*Derived* derivedPtr dynamic_castDerived*(ptr);if (derivedPtr) {std::cout Dynamic cast succeeded std::endl;} else {std::cout Dynamic cast failed std::endl;}delete ptr;return 0;
}