对于单一的虚继承可参考这篇博客:
https://blog.csdn.net/sophia__yu/article/details/82791522
对于有虚函数继承可参考这篇博客:
https://blog.csdn.net/sophia__yu/article/details/82791592
接下来将会介绍既有虚继承也有多态的继承:
首先看代码:
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
/虚基表和虚表
class A
{
public:
virtual void f1()
{
cout << "A::f1()" << endl;
}
virtual void f2()
{
cout << "A::f2()" << endl;
}
public:
int _a;
};
class B :virtual public A
{
public:
virtual void f1() //重写虚函数
{
cout << "B::f1 ()" << endl;
}
virtual void f3() // B重新定义的虚函数
{
cout << "B::f3()" << endl;
}
//另外B继承了A的f2函数
public:
int _b;
};
class C : virtual public A
{
public:
virtual void f1() // C重写了虚函数f1