1.类的继承中的同名问题
1.1正常继承中的同名问题
基本上C++同名问题都是就近原则
如果想访问父类成员,用类名限定即可。
2.虚继承(菱形继承)
A ---->int a;
B C B、C继承自A,D多继承于B、C ----->B:a C:a //B,C要虚继承A
D ------>D: a a
class A { public: A(int a) :a(a) {} int a; }; class B :virtual public A{ public: B(int a, int b) :A(a), b(b) {} int b; }; class C :virtual public A { public: C(int a, int c) :A(a), c(c) {} int c; }; class D:public B,public C { public: //虚继承导致子类必须调用祖父类的构造函数 D() :B(1,2),C(10,20),A(100) {} void print() { cout << a << endl; //100 cout << B::a << endl; //100 cout << C::a << endl; //100 } }; int main() { D d; d.print(); return 0; }