虚基类和抽象类的解释 c++
时间: 2024-03-22 11:35:46 浏览: 90
详解C++纯虚函数与抽象类
5星 · 资源好评率100%
虚基类和抽象类是C++中的两个重要概念,它们有一些区别和联系。
虚基类是被"virtual"继承的类,任何类都可以成为虚基类。虚基类的主要作用是解决多重继承中的菱形继承问题,即当一个派生类同时继承了两个基类,而这两个基类又共同继承自同一个虚基类时,通过虚基类可以避免派生类中出现两份虚基类的实例。虚基类没有纯虚函数的要求。
抽象类是至少包含一个纯虚函数的类,它不能被实例化,即不能创建抽象类的对象。抽象类的主要作用是作为基类,为派生类提供接口和规范。派生类必须实现抽象类中的纯虚函数才能被实例化。抽象类可以包含非纯虚函数和数据成员。
以下是一个示例代码,展示了虚基类和抽象类的使用:
```cpp
// 虚基类
class Base {
public:
int x;
};
// 派生类1
class Derived1 : virtual public Base {
public:
int y;
};
// 派生类2
class Derived2 : virtual public Base {
public:
int z;
};
// 最终派生类
class FinalDerived : public Derived1, public Derived2 {
public:
int sum() {
return x + y + z;
}
};
// 抽象类
class AbstractClass {
public:
virtual void pureVirtualFunction() = 0;
void nonVirtualFunction() {
// 非纯虚函数的实现
}
};
int main() {
FinalDerived obj;
obj.x = 1;
obj.y = 2;
obj.z = 3;
int result = obj.sum(); // 输出:6
AbstractClass* ptr;
// ptr = new AbstractClass(); // 错误,抽象类不能被实例化
// 抽象类可以作为指针类型使用
ptr->pureVirtualFunction(); // 调用派生类中的实现
return 0;
}
```
阅读全文