继承与派生类 学习笔记3--虚基类

时间:2022-09-08 08:22:50

虚基类

虚基类引入为了解决继承有时可能产生的对基类成员的访问存在的二义性问题。

例子,四个类定义。

#include<iostream>
using namespace std;

class B0
{
private:
int test;
public:
B0()
{
test=8;
cout << "B0 constructor." << endl;
}
int GetTest()
{
return test;
}
};

class B1: virtual public B0
{
public:
B1()
{
cout << "B1 constructor." << endl;

}
void PrintB1()
{
cout <<"B1: test=" << GetTest();
cout << endl;
}
};

class B2: virtual public B0
{
public:
B2()
{
cout << "B2 constructor." << endl;
}
void PrintB2()
{
cout <<"B2: test=" << GetTest();
cout << endl;
}
};

class Derived:public B1,public B2
{
public:
Derived()
{
cout << "Derived constructor." << endl;
}

void PrintDerived()
{
cout << "Derived: test=" << GetTest();
cout << endl;
}
};

int main()
{
Derived d;
d.PrintB1();
d.PrintB2();
d.PrintDerived();

return 0;
}

继承与派生类 学习笔记3--虚基类