通過基類的物件,就只能訪問該類的公有成員,派生類可以繼承基類中除了建構函式和析構函式之外的成員,但這些成員的訪問屬性在派生過程中是可以調整的。
基類的建構函式和析構函式不能被繼承
先看**: 這是乙個繼承的訪問規則的問題
下面**通過windows7下的dev c++的正常執行
#include
class base
void showx()
};class derived:private base
void showxy()
};int main(int argc,char *argv)
我的認識是:
基類的訪問屬性是private,例如base的x ,子類的繼承方式是private,那麼在子類中是否有這個private的成員變數或函式?
derived 從 base 那裡繼承了 void setx(int);和void showx(); 那是否繼承 x 呢?
於是 derived 就變成了如下 (是否真的變成下面?)
class derived
void showx()
public:
void setxy(int n ,int m)
void showxy()
};還是變成了
class derived
void showx()
public:
void setxy(int n ,int m)
void showxy()
};
結論是:這個是正確的,繼承會繼承所有的父類的東西,只是訪問有限制而已的
這個時候問題來了:
在main中呼叫 obj.setxy(10,15) 會呼叫自己繼承來的 private void setx(n),那麼這個10是賦給誰呢?
是賦給obj呢,還是怎麼樣,這個x從何而來呢?
在main中呼叫 obj.showxy(),也是會呼叫自己繼承來的 private void showx(),問題同上,
這個x是誰的成員變數呢?
我覺得是obj的x, 但是書上只說不可以直接訪問,但可以通過基類的public函式間接訪問
最終結論:子類全部繼承 父類的所有(無論private,protected還是public)成員變數和成員函式,但是會有訪問的限制
C 基礎 繼承與派生 宣告 繼承方式 訪問規則
繼承是物件導向程式設計中的重要特性,是軟體復用的一種形式。其實繼承和派生就是同一種概念的不同說法罷了,通常我們說子類繼承父類,父類派生出子類。先講一下c 中派生與繼承的基本概念,它是之後學習派生類的構造與析構,以及多重繼承等的基礎。1.派生類的宣告 宣告乙個派生類的一般格式 class 派生類名 繼...
C 繼承機制 C 中的繼承符合下列規則
1 繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object 類作為所有類的基類。2 派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承的成員的定義。3 建構函式和析構函式不能被繼承。除此以外的其它成員,不論對它們定...
C 私有繼承訪問
環境 vs2010 問題 c 私有繼承在外部的訪問 include using namespace std class a public a a 0 cout int a class b protected a public b i 1 cout public int i int main void...