1 访问从基类继承的成员
无Base:: 限定时,访问派生类中同名成员
派生类中无同名成员,存在二义性的成员用类名限定
多继承时的二义性和冗余问题
2 虚基类
#include <iostream>
using namespace std;
class Base0 {
public:
Base0(int var) : var0(var) { }
int var0;
void fun0() { cout << "Member of Base0" << endl; }
};
class Base1: virtual public Base0 {
public:
Base1(int var) : Base0(var) { }
int var1;
};
class Base2: virtual public Base0 {
public:
Base2(int var) : Base0(var) { }
int var2;
};
class Derived: public Base1, public Base2 {
public:
Derived(int var) : Base0(var), Base1(var), Base2(var)
{ }
int var;
void fun()
{ cout << "Member of Derived" << endl; }
};
int main() { //程序主函数
Derived d(1); /虚基类的构造函数只调用一次
d.var0 = 2; /直接访问虚基类的数据成员
d.fun0(); /直接访问虚基类的函数成员
return 0;
}