基类指针转为子类指针
时间: 2024-03-16 19:40:05 浏览: 119
浅谈C++ 基类指针和子类指针的相互赋值
基类指针转为子类指针是一种常见的操作,可以通过向下转型(downcasting)来实现。向下转型是将基类指针或引用转换为子类指针或引用的过程。
在进行向下转型之前,需要确保基类指针指向的对象实际上是子类对象,否则可能会导致类型不匹配的错误。可以使用dynamic_cast运算符来进行安全的向下转型,它会在运行时检查类型信息,如果转型不合法,则返回空指针或引发异常(如果是引用类型)。
以下是一个示例代码,演示了基类指针向子类指针的转换:
```cpp
class Base {
public:
virtual void func() {
cout << "Base::func()" << endl;
}
};
class Derived : public Base {
public:
void func() override {
cout << "Derived::func()" << endl;
}
};
int main() {
Base* basePtr = new Derived(); // 基类指针指向子类对象
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr); // 向下转型
if (derivedPtr) {
derivedPtr->func(); // 调用子类的成员函数
} else {
cout << "向下转型失败!" << endl;
}
delete basePtr;
return 0;
}
```
在上述代码中,首先创建了一个基类指针`basePtr`,并将其指向一个子类对象。然后使用`dynamic_cast`将基类指针转换为子类指针`derivedPtr`。如果转型成功,则可以通过`derivedPtr`调用子类的成员函数。
阅读全文