1. 程式人生 > 其它 >C++第07課 繼承 (三)

C++第07課 繼承 (三)

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; }