C++編程-從問題分析到程序設計

第13章-類和數據抽象

1.C++並不自動初始化變量,要保證類中的數據成員被初始化,必須使用構造函數

2.構造函數與類的名稱相同,並且沒有任何類型,當然也就沒有返回值。

3.一個類有多個構造函數,並且構造函數可能有相同的名稱,但是參數一定不同

4.構造函數分爲:帶參數的構造函數+不帶參數的構造函數(默認構造函數)

5.析構函數:沒有任何類型、一個類只有一個、不能夠帶參數、名稱相對固定:“~”加上類名

6.類函數:成員函數+構造函數+析構函數

7.*.cpp只包含函數的定義,不包含類的定義。


第14章 集成和組合

1.兩個類聯繫起來的方法:繼承(“ is-a kind of ”關係:是一種。。。)和組合(“ has-a kind of ”關係:有一種。。。關係);

2.繼承:在已有類的基礎上創建新的類,其中在已有類的基礎上創建的類稱之爲,派生類;已有類稱之爲:基類

3.繼承:單重繼承(一個基類)、多重繼承(多個基類)。

4.繼承:

class circle: publicshape

{

..........

}


class circle: private shape

{

...........

}

其中,派生類circle繼承了基類shape,public表示shape的所有公有成員及成爲circle的公有成員,private表示shape的所有公有成員成爲circle的私有成員。

5.派生新類經歷的三個步驟:

  • 吸收基類成員
  • 改造基類成員
  • 添加新的成員

6.三種繼承方式:

  • 公有繼承
  • 私有繼承
  • 保護繼承
7.公有繼承:基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的private成員不可直接訪問

8.私有派生:繼承的基類成員全部變成私有成員,也就是基類成員的終結。

9.保護繼承:派生類的家族可訪問,類繼承家族之外不可訪問;

10.絕對不要重新定義繼承而來的非虛函數

11.基類與派生類的對應關係:

  • 單繼承:派生類由一個基類派生而來
  • 多繼承:派生類由多個基類派生而來
  • 多重派生:一個基類派生出多個不同的派生類
  • 多層派生:派生類又作爲基類,繼續派生派生類。

12.基類與派生類的構造函數均自己負責。

13.派生類的構造函數任務之一:給基類的構造函數傳遞參數。

14.同名隱藏原則:派生類中的同名成員會使得基類中同名成員隱藏。

15.虛基類:虛繼承

16.組合:一輛汽車有一個發動機和四個輪子;接口:作爲整體的汽車不在具備發動機的運轉功能和輪子的轉動功能,但通過這些功能的組合,具有了自己的功能:移動.

17.公有繼承:A類是B類的公有基類,則B類型對象包括了A類型的全部接口。如:卡車是汽車,消防車也是汽車;接口:卡車和消防車具有汽車的通用功能(移動),它們還各自具有自己的功能。

18.派生類對象:總含有一個基類的子對象。

19.不同情況下的內存佈局:

  • 單繼承:基類數據在前,派生類新增數據在後;
  • 多繼承:各基類數據按順序在前,派生類新增數據在後;
  • 虛繼承:需要增加指針,間接訪虛基類數據;



20.運算符重載:

除了以下運算符,其餘運算符均可重載:"." ".*" "::" "?:" 

重載後運算符的優先級和結合性都不會改變

21.聲明形式

函數類型 operator 運算符 (形參)

{

.... ....

}

其中,operator 運算符爲函數名

22.虛函數:

virtual 函數類型 函數名 (形參表)

{

函數體

}

23.虛函數不能進行早綁定,只能進行晚綁定。編譯器爲每一個具有虛函數的類準備了一個虛函數表。

24.純虛函數是一個在基類中聲明的虛函數,它在該基類中沒有辦法具體定義此函數的內容,要求各個派生類根據實際需要定義自己的版本。

  • 純虛函數的聲明格式:

virtual 函數類型 函數名 (參數表) = 0;

  • 帶有純虛函數的類稱爲抽象類:

class 類名

{

virtual 類型 函數名 (參數表) = 0;

... ...

}

25.


發佈了45 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章