温馨提示×

C++中dynamic_cast的用法是什么

c++
小亿
85
2023-12-11 09:25:41
栏目: 编程语言

dynamic_cast是C++中的一种类型转换操作符,用于在继承关系中进行类型转换。它用于将一个指向基类的指针或引用转换为指向派生类的指针或引用。

语法如下: dynamic_cast<目标类型>(表达式)

使用dynamic_cast时,必须满足以下条件:

  1. 源类型必须是多态类型,即需要带有虚函数的类或者类的指针/引用;
  2. 目标类型必须是源类型的公有派生类或者基类。

dynamic_cast的作用是在运行时检查类型转换的合法性,如果转换合法,则返回指向目标类型的指针或引用;如果转换不合法,则返回nullptr(对于指针)或抛出std::bad_cast异常(对于引用)。

示例:

class Base {
public:
    virtual void print() {
        cout << "Base class" << endl;
    }
};

class Derived : public Base {
public:
    void print() override {
        cout << "Derived class" << endl;
    }
};

int main() {
    Base* basePtr = new Derived();
    
    Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
    if (derivedPtr != nullptr) {
        derivedPtr->print(); // 输出:Derived class
    }
    
    delete basePtr;
    return 0;
}

在上述示例中,我们将Derived类的对象指针赋值给了Base类的指针basePtr。然后使用dynamic_cast将basePtr转换为Derived类的指针,如果转换成功,则调用Derived类的print函数输出"Derived class"。

0