C++中基类和派生类之间如何转换
时间: 2024-04-29 13:22:06 浏览: 97
基类对象-C++程序设计详解ppt
在 C++ 中,可以使用基类指针或引用来指向派生类对象,这被称为向上转型,也就是将派生类对象转换成基类对象。但是,不能使用基类指针或引用来调用派生类特有的成员函数和成员变量。
另外,也可以使用 dynamic_cast 运算符进行向下转型,将基类指针或引用转换成派生类指针或引用。但是,这种转换只有在基类指针或引用实际指向的对象是派生类对象时才能成功,否则会返回空指针或引用。
例如:
```c++
class Base {
public:
virtual void func() {
cout << "This is a Base class function." << endl;
}
};
class Derived : public Base {
public:
void func() {
cout << "This is a Derived class function." << endl;
}
};
int main() {
Base *pBase = new Derived;
pBase->func(); // 输出 "This is a Derived class function."
Derived *pDerived = dynamic_cast<Derived*>(pBase);
if (pDerived) {
pDerived->func(); // 输出 "This is a Derived class function."
}
delete pBase;
return 0;
}
```
在上面的例子中,首先创建了一个 Derived 类的对象并用一个 Base 类的指针指向它,然后通过基类指针调用了派生类的成员函数。接下来使用 dynamic_cast 运算符将基类指针转换成派生类指针,并调用了派生类的成员函数。最后释放了对象的内存空间。
阅读全文