虚基类
虚基类引入为了解决继承有时可能产生的对基类成员的访问存在的二义性问题。
例子,四个类定义。
#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;
}

本文深入探讨了C++中虚基类的概念及其解决继承带来的访问基类成员二义性问题的方法。通过具体代码示例,详细阐述了如何在类继承结构中合理使用虚基类,确保程序的正确性和效率。
1461

被折叠的 条评论
为什么被折叠?



