虚继承
时间: 2023-08-21 07:12:18 浏览: 98
详解虚继承
虚继承是一种C++中的继承方式,用于解决多重继承带来的问题。在多重继承中,如果一个类从多个基类派生而来,而这些基类中又有公共的基类,那么这个公共的基类就会被派生出多个副本,造成资源浪费和二义性问题。
虚继承的作用就是消除这些多余的副本,让派生类只继承一份公共基类。具体实现方法是在公共基类的继承前面加上关键字“virtual”,这样派生类就只继承一份公共基类。
例如,如果有以下类的继承关系:
```
class A {...};
class B : public A {...};
class C : public A {...};
class D : public B, public C {...};
```
由于B和C都继承自A,D继承自B和C,因此D中会包含两份A的副本。如果将A改为虚继承,则可以避免这个问题:
```
class A {...};
class B : virtual public A {...};
class C : virtual public A {...};
class D : public B, public C {...};
```
这样,D中就只包含一份A的副本。
阅读全文