繼承:在定義乙個新的類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 求最大公約數 兩種演算法...