MOOC C 筆記(五) 繼承

2022-01-29 03:54:03 字數 1647 閱讀 5485

繼承:在定義乙個新的類b時,如果該類與某個個已有的類a相似(指的是b擁有a的全部特點),那麼就可以把a作為乙個基類,而把b作為基類的乙個派生類(也稱子類)。

派生類是通過對基類進行修改和擴充得到的。在派生類中,可以擴充新的成員變數和成員函式。

派生類一經定義後,可以獨立使用,不依賴於基類。

派生類擁有基類的全部成員函式和成員變數,不論是private、prtected、public。

注意:在派生類的各個成員函式中,不能訪問基類中的private成員。

class 派生類名: public 基類名 ;

關於繼承派生形式可以為private和protected,詳見:c++ private和protected派生(私有和保護派生)

等於基類物件的體積,再加上派生類物件自己的成員變數的體積。在派生類物件中,包含著基類物件,而且基類物件的儲存位置位於派生類物件新增的成員變數之前。

繼承:「是」的關係。

基類a,b是基類a的派生類。

邏輯上要求:「乙個b物件也是乙個a物件」。

復合:「有」關係。

類c中「有」成員變數k,k是類d的物件,則c和d是復合關係

一般邏輯上要求:「d物件是c物件的固有屬性或組成部分」。

派生類可以定義乙個和基類成員同名的成員,這叫覆蓋。在派生類中訪問這類成員時,預設的情況是訪問派生類中定義的成員。要在派生類中訪問由基類定義的同名成員時,要使用作用域符號::。

(注意盡量不要再派生類定義同名的成員變數)

基類的private成員:可以被下列函式訪問

1.基類的成員函式

2.基類的友員函式

基類的public成員:可以被下列函式訪問

1.基類的成員函式

2.基類的友員函式

3.派生類的成員函式

4.派生類的友員函式

5.其他的函式

基類的protected成員:可以被下列函式訪問

1.基類的成員函式

2.基類的友員函式

3.派生類的成員函式可以訪問當前物件的基類的保護成員

在建立派生類的物件時,需要呼叫基類的建構函式:初始化派生類物件中從基類繼承的成員。在執行乙個派生類的建構函式之前,總是先執行基類的建構函式。

派生類的析構函式被執行時,執行完派生類的析構函式後,自動呼叫基類的析構函式。

在建立派生類的物件時

1.先執行基類的建構函式,用以初始化派生類物件從基類繼承的成員;

2.再執行成員物件類的建構函式,用以初始化派生類物件中成員物件。

消亡時析構與建構函式相反。

1.派生類的物件可以賦值給基類物件(保留派生類中的基類內容)

2.派生類物件可以初始化基類引用

3.派生類物件的位址可以賦給基類指標(這點很重要,可以用此來實現多型)

如果派生方式是private或者protected,則上述三條不可行。

類a派生類b,類b派生類c,類c派生類d,。。。

類a是類b的直接基類

類b是類c的直接基類,類a是類c的間接基類

類c是類d的直接基類,類a、b是類d的間接基類

在宣告派生類時,只需要列出它的直接基類

派生類沿著類的層次自動向上繼承它的間接基類

派生類的成員包括

1.派生類自己定義的成員。

2.直接基類中的所有成員。

3.所有間接基類的全部成員。

MOOC C 筆記(六) 多型

在類的定義中,前面有virtual關鍵字的成員函式就是虛函式。virtual關鍵字只用在類定義裡的函式宣告中,寫函式體時不用。建構函式和靜態成員函式不能是虛函式。派生類的指標可以賦給基類指標。通過基類指標呼叫基類和派生類中的同名虛函式時 1 若該指標指向乙個基類的物件,那麼被呼叫的是基類的虛函式。2...

北京大學MOOC C 學習筆記(五)虛函式和多型

在類的定義中,前面有 virtual 關鍵字的成員函式就是虛函式。class base int base get virtual 關鍵字只用在類定義裡的函式宣告中,寫函式體時不用。若該指標指向乙個基類的物件,那麼被呼叫是基類的虛函式 若該指標指向乙個派生類的物件,那麼被呼叫的是派生類的虛函式。這種機...

中國大學MOOC C語言筆記03

5.1迴圈控制 判斷素數 如下 include int main printf f d f n n,sum return 0 求和 f n 1 1 2 1 3 1 4 1 5 如下 include int main printf f d f n n,sum return 0 求最大公約數 兩種演算法...