3.5 C++間接繼承
阿新 • • 發佈:2017-10-06
統一 pub () right 通過 span bsp 屬性 code
參考:http://www.weixueyuan.net/view/6362.html
總結:
假設類C繼承自類B,類B繼承自類A。那麽類C中的除了能夠繼承B類的成員函數和成員變量外,同樣也能繼承B類繼承自A類的所有成員。換言之,類C可以繼承來自類A的所有成員。因此繼承既可以是直接繼承,也可以是間接繼承。
例1:
class A { public: int getx(){return x;} void setx(int a){x = a;} private: int x; }; class B : public A { public: int gety(){returny;} void sety(int b){y = b;} private: int y; }; class C : public B { public: int getz(){return z;} void setz(int c){z = c;} private: int z; };
在本例中,先定義了類A,然後通過派生定義了類B,之後再派生出類C。B類和C類都有自己新增的成員變量和成員函數。下面我們將以表格的形式列出類A、B和C的所有成員和成員變量。
類 | 成員 | 屬性 | 來源 |
---|---|---|---|
A | x | private | 自身 |
getx | public | 自身 | |
setx | public | 自身 | |
B | x | 不可訪問 | 繼承自類A |
setx | public | 繼承自類A | |
getx | public | 繼承自類A | |
y | private | 類B新增 | |
sety | public | 類B新增 | |
gety | public | 類B新增 | |
C | x | 不可訪問 | 繼承自類B |
setx | public | 繼承自類B | |
getx | public | 繼承自類B | |
y | 不可訪問 | 繼承自類B | |
sety | public | 繼承自類B | |
gety | public | 繼承自類B | |
z | private | 類C新增 | |
setz | public | 類C新增 | |
getz | public | 類C新增 |
從表中我們可以看出類C不僅包含B類的成員,同時還包含了類A中的成員,在表格中我們都這些成員都統一歸為繼承自類B,而實際上我們也可以將成員變量x及成員函數setx和getx視為間接繼承自類A。當然,間接繼承所得的成員變量和成員函數,其屬性遵循直接繼承時的規則。
3.5 C++間接繼承