物件導向的程式設計C 小知識點

2021-09-24 11:52:46 字數 3285 閱讀 2488

1、類是將不同型別的資料和對這些資料的操作封裝在一起的集合體。

2、類的型別,也僅僅

是一種資料型別。

3、類是物件的抽象,物件是類的例項。

4、類中的資料成員的型別可以是任意的。包括整型、浮點型、字元型、陣列、指標和引用。

5、在類體中不允許對所定義的資料成員進行初始化。因為類的定義只是在建立乙個型別,而不是在說明變數。

6、在類的內部定義的成員函式叫內聯函式,在類的外部定義的成員函式叫外聯函式。

7、實現類外部定義的好處是:使整個類的**合理布局,容易維護,而缺點是增加了成員函式呼叫的開銷。

8、在類的外部定義內聯函式(關鍵字:inline)是可以使**合理分配,又避免呼叫的開銷。

9、類的物件對類中成員的訪問受訪問許可權控制,但成員函式對資料成員或成員函式並沒有任何限制。

10、在大多數情況下,類的保護成員具有私有成員的性質。

11、訪問許可權修飾符(訪問許可權控制符)在類體**現的先後順序無關,允許多次出現。

12、類作為乙個使用者自定義的資料型別,系統不會給類分配儲存空間,只有定義了類的物件才會給物件分配相應的記憶體。建立物件時,使用類作為樣板,為物件分配記憶體。每個物件佔據記憶體不同區域,各自的資料不同,但是運算元據的函式**是共用的,所以建立物件是指分配用於儲存資料的記憶體,操作函式為各個物件共享。

13、由於封裝性,物件只能訪問公有成員。如果類中的成員沒有指明許可權,預設為私有。

14、建構函式的功能,是在建立物件時,給物件分配記憶體空間並使用給定的值來初始化物件。                                                15、析構函式的功能是在物件刪除前用來做一些釋放和清理工作的。

16、建構函式的特點:                    (1)為類的成員函式;(2)不能有返回值;    (3)可以過載(4)程式一般不直接呼叫建構函式,在建立物件時會自動呼叫建構函式,以完成物件的初始化工作。

17、析構函式的特點:(1)乙個類中只能有乙個析構函式;(2)不能有返回值;(3)不能過載;(4)在物件消失時,析構函式會被自動呼叫。

18、建構函式和析構函式均不能定義在類的私有部分。                            19、拷貝建構函式是一種特殊的建構函式,它的功能是物件在初始化時用乙個已知物件的資料成員的值複製給正在建立的另乙個同類的物件對應的資料成員。其函式不能有返回值;只能有乙個引數;每個類必須有乙個拷貝建構函式。

20、靜態資料成員不屬於某個物件的成員,而是屬於所有物件的。

21、靜態資料成員在定義或說明時前面加關鍵字:static。

22、靜態資料成員屬於整個類,必須在類體外進行初始化,但前面不再加static,也不加訪問控制識別符號。格式:資料型別 類名::靜態資料成員名=值; 靜態資料成員不隨物件的建立而分配空間,也不隨物件被釋放而撤銷。當靜態資料成員被分配了記憶體空間後,只有在程式結束後才能被釋放。

23、友元函式可以訪問類中的所有成員,包括私有成員,顯然它破壞了類的封裝性;但它本身又不是類的成員函式。

24、友元函式在呼叫上與普通函式相同。

25、定義好靜態資料成員後,引用它的格式也要注意與引用一般成員的區別:

類名::靜態成員名

而一般成員的引用格式為:物件名.成員名

在同類的成員函式中引用,可省略 類名::

26、靜態成員函式可以直接引用靜態資料成員,但不能直接引用非靜態資料成員,必須通過物件來引用類中的非靜態資料成員。

27、友元類:友元關係不可逆(b類是a類的友元類不等於a類是b類的友元類)、無傳遞性(b類是a類的友元類,c類是b類的友元類,不等於說c類是a類的友元類)。

28、友元函式沒有this指標,因為友元不是類的成員。只有成員函式才有 this 指標。

29、對於常資料成員,在任何函式中都不能對它賦值,也不能更新。因此必須對它進行初始化,而且只能通過採用建構函式的成員初始化列表來實現。

30、常成員函式的const是放在函式頭的後面,如:int get_hour()const。

31、公有繼承:派生類的成員函式可以訪問基類中的公有成員和保護成員,不可訪問其私有成員。派生類的物件只可訪問基類中的公有成員,不能訪問其它成員。

32、私有繼承:派生類的成員函式可以訪問基類中的公有成員和保護成員,不可訪問其私有成員。派生類的物件不能訪問它們。

33、保護繼承:派生類的成員函式可以訪問基類中的公有成員和保護成員,不可訪問其私有成員。派生類的物件不能訪問它們。可以向下繼承。

34、預設繼承方式預設為private。

35、雖然基類的私有成員被派生類吸收,但不可訪問。

36、建構函式與析構函式都不能繼承。

37、派生類的建構函式必須通過呼叫基類的建構函式來初始化基類的資料成員。一般格式如下:

派生類建構函式名(參數列):基類建構函式名(參數列)

38、派生類建構函式的任務應該包括3個部分:

(1) 對基類資料成員初始化;

(2) 對子物件資料成員初始化;

(3) 對派生類資料成員初始化。

39、派生類建構函式的呼叫順序:

(1)基類的建構函式;

(2)子物件的建構函式;

(3)派生類建構函式;

40、派生類的析構函式呼叫的順序與建構函式正好相反。

41、在多繼承的派生類的建構函式中,先執行基類的建構函式;多個基類的建構函式的執行順序取決於定義派生類時規定的先後順序。

42、c++支援2種多型性:

(1)靜態多型性:編譯時的多型性,其具體實現主要有函式過載和運算子過載;

(2)動態多型性:執行時的多型性,其具體實現主要有虛函式。

43、運算子過載函式的兩種形式:過載為類成員函式,過載為友元函式。

44、c++用函式過載和運算子過載來實現編譯時的多型性;用繼承和虛函式來實現執行時的多型性。

45、靜態聯編:聯編工作在編譯連線階段完成。

46、動態聯編:聯編工作在程式執行階段完成。

47、虛函式是動態聯編的基礎。虛函式是特殊的函式過載。關鍵字只能對基類中的非靜態的保護成員或公有成員函式進行宣告。過載時必須滿足與原虛函式相同引數等要求!

48、建構函式不能宣告為虛函式,析構函式可以!內聯函式也不能宣告為虛函式!

49、帶有純虛函式的類為抽象類。純虛函式:例:virtual void area()=0;

即virtual  函式原型=0;

50、(1)封裝、繼承、多型是物件導向程式設計的三大特徵。

(2)所謂多型,即乙個名字,多種語義;或相同的介面,多種實現。

(3)函式過載和虛函式是實現多型的主要方式。兩者的區別在於:函式過載強調的函式名相同,函式引數不同,屬於靜態聯編;

虛函式則強調單介面多實現版本的方法,即函式名、返回型別、函式引數的型別、個數完全相同,但函式體可以完全不同,屬於動態聯編。

物件導向知識點小總結

what when where why whom,how 類與物件的關係 類是物件的抽象,物件是類的實現 類是由方法和屬性構成,它的每乙個物件都有對應的屬性和方法 方法 方法的過載 目的 針對同乙個行為的多種表現,對應相同方法名的多個方法 方法名相同,引數列表不同 類方法 static方法 類名.方...

Python知識點 物件導向程式設計

物件導向程式設計是一種程式設計正規化,把程式看作不同物件的相互呼叫,對現實世界建立物件模型。定義乙個person類如下 class person object pass格式為 class 類名 object object表示定義的類是由那個類繼承下來的 函式體pass類名一般以大寫開頭。建立例項使用...

C 程式設計小知識點

1 this指標可指向常量型資料 可指向成員函式,不可以指向靜態成員函式。this指標始終指向呼叫成員函式的物件。2 巨集定義語句 define bufsize 100 const int bufsize 100 3 模板類的基類和派生類都可以是模板類或非模板類。4 類a宣告為類b的友元後,類a直接...