虚继承

Posted 邓涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚继承相关的知识,希望对你有一定的参考价值。

由多继承和多重继承引发的一些问题?  看一个例子:

   

在这个例子中,即有多继承,又有多重继承,类D继承于类B和类C,而类B和类C都继承于类A,

这就导致类D中会存在两份类A,这是不允许的,那么就得通过今天的虚继承来解决这个问题。

虚继承用法如下所示:

 1 class Person {
 2 
 3 };
 4 
 5 class Worker : virtual public Person {
 6 
 7 };
 8 
 9 class Farmer : virtual public Person {
10 
11 };
12 
13 class MigrantWorker : public Worker, public Farmer {
14 
15 };

那么使用MigrantWorker这个类去实例化一个对象,那么这个对象当中只含有一份Person的数据。

 

参考:  《慕课网》

 

以上是关于虚继承的主要内容,如果未能解决你的问题,请参考以下文章

C++-继承-菱形继承-菱形虚拟继承-虚函数表

多重继承,虚继承,MI继承中虚继承中构造函数的调用情况

片段通信问题(尝试调用虚方法)

c++头脑风暴-多态虚继承多重继承内存布局

c++头脑风暴-多态虚继承多重继承内存布局

探索VS下实现虚继承的方法-2