C 要點總結

2021-10-19 02:02:48 字數 4911 閱讀 3938

1)隱式宣告:將成員函式直接定義在類的內部 2)顯式宣告:inline標示

2)在類中,使用inline定義內聯函式時,必須將類的宣告和內聯成員函式的定義都放在同乙個檔案中,否則編譯時無法進行**置換。

1)物件賦值語句進行物件賦值時,兩個物件的型別必須相同

2)資料成員佔儲存空間,成員函式佔相同的函式**段

3)類中存在指標時,使用預設賦值運算函式賦值,可能錯誤

1)跟普通成員函式一樣,當建構函式直接定義在類中時,作為內聯函式處理

2)一般宣告為公有成員,但不能顯式呼叫,定義物件時自動呼叫,且只執行一次

1)c++中,引用型別和const修飾的成員不允許在建構函式中用賦值語句直接賦值

2)類成員按照在類中被宣告的順序初始化,與在初始化列表中列出的順序無關

1)析構函式沒有引數、返回值,且不能過載

2)撤銷物件時,編譯系統自動呼叫析構函式

1)當乙個類定義了乙個建構函式,系統不再提供預設建構函式
1)乙個類中,當無引數的建構函式和帶預設引數的建構函式過載時,可能產生二義性
1)拷貝建構函式只有乙個引數,並且是同類物件的引用

2)每個類都有乙個拷貝建構函式

3)呼叫拷貝建構函式三種情況:

(1)當用類的乙個物件去初始化該類的另乙個物件時

(2)當函式形參是類的物件

(3)當函式的返回值是物件

1)預設的拷貝建構函式是淺拷貝。有指標型別時,只是讓指標指向同一塊記憶體,沒有申請新的記憶體

2)預設的拷貝建構函式處理帶指標型別資料時,當呼叫析構函式時可能出現錯誤

1)靜態資料成員初始化應在定義物件之前,類外單獨進行。一般在main()之前、類宣告之後。如:int student::count = 0

2)靜態資料成員屬於類

3)靜態資料成員跟靜態變數一樣,在編譯時建立並初始化

1)靜態成員函式的作用是為了處理靜態資料成員。如確實需要,靜態成員函式只能通過物件名訪問該物件的非靜態成員

2)靜態成員函式與非靜態成員函式的重要區別是:非靜態成員函式有this指標,靜態成員函式沒有this指標

3)私有靜態成員函式不能被類外部的函式和物件訪問

4)靜態成員函式可以在建立任何物件之前呼叫,以處理靜態資料成員

5)編譯系統將靜態成員函式限定為內部連線

6)靜態成員函式是類的一部分,而不是物件的一部分,可以用類名::或物件呼叫共有靜態成員函式

1)友元函式既可以是不屬於任何類的非成員函式,也可以是另乙個類的成員函式

2)因為友元函式不是類的成員,所以不能直接訪問物件的資料成員,也不能通過this指標訪問物件的資料成員,必須通過作為入口引數傳遞進來的物件名  (指標、引用)來訪問該物件的資料成員

3)友元函式提供了不同類的成員函式之間、類的成員函式與一般函式之間進行資料共享的機制

1)乙個類的成員函式作為另乙個類的友元函式時,必須先定義這個類

2)提前引用宣告

1)當乙個類被說明為另乙個類的友元類時,它所有的成員函式都成為另乙個類的友元函式

2)友元關係沒有交換性和傳遞性

1)當呼叫建構函式時,按各物件成員在類宣告中的順序依次呼叫他們的建構函式,再執行類的建構函式體

2)呼叫順序跟在初始化列表中的順序無關。析構函式跟建構函式順序相反。

1)常引用往往用來作為函式的形參,這樣的引數稱為常引數。

2)c++不允許更改常物件的資料成員,c++不允許常物件呼叫普通的成員函式

1)類中說明的常資料成員,建構函式只能通過初始化列表對它初始化

2)常成員函式在宣告函式和定義函式時都要有關鍵字const

3)關鍵字const可以被用於對過載函式區分

4)常成員函式可以訪問常資料成員,也可以訪問普通資料成員,但都不能改變

5)普通成員函式可以訪問和改變普通資料成員,可以訪問常資料成員但不能改變

6)常物件只能呼叫它的常成員函式,常成員函式是常物件唯一對外介面

7)常成員函式不能更新物件的資料成員,也不能呼叫該類普通成員函式

1)派生類可以繼承基類中除了建構函式與析構函式之外的成員

2)基類中的私有成員無論哪種繼承,在派生類中都不可直接訪問

3)其他在派生類中的訪問屬性為基類中的訪問屬性與繼承方式中較低公開性的那個

1)當建立派生類物件時,先呼叫基類的建構函式,隨後呼叫派生類建構函式

2)當含有子物件時,先呼叫基類建構函式,然後呼叫子物件建構函式,最後呼叫派生類建構函式體,撤銷物件時,析構跟建構函式順序相反

3)如果派生類的基類也是乙個派生類,每個派生類只負責其直接基類的資料成員初始化

1)在沒有虛函式時,如果在派生類中定義與基類成員同名的成員,則稱派生類成員覆蓋了基類的同名成員,在派生類中使用該成員意味著訪問重新宣告的成   員。用::可以訪問到基類的同名成員。
1)訪問宣告可個別調整基類的某些成員在派生類中的訪問屬性,使在派生類中保持原來的訪問屬性

2)訪問宣告只能是基類名::成員名的形式,不可帶型別和引數,如:a::disp,a::a

3)訪問宣告不能改變成員在基類中的訪問屬性,對基類的私有成員不能使用訪問宣告

4)對於基類中的過載函式名,訪問宣告對基類所有同名函式起作用

1)多繼承中的建構函式的呼叫順序與初始化列表中的順序無關,只與宣告繼承方式時順序有關
1)為了解決多繼承中的二義性

2)如果在虛基類中定義有帶形參的建構函式,並且沒有定義預設形式的建構函式,則整個繼承結構中,所有直接或間接的派生類都必須在建構函式成員初始 化列表中列出對虛基類建構函式的呼叫

3)建立乙個物件時,如果這個物件中含有從虛基類繼承來的成員,則虛基類的成員是由最遠派生類的建構函式通過呼叫虛基類的建構函式進行初始化的,該 派生類的其他基類對虛基類建構函式的呼叫都自動被忽略。

4)同一層次中同時包含虛基類和非虛基類,應先呼叫虛基類的建構函式,再呼叫非虛基類的建構函式,最後呼叫派生類建構函式。

5)對於多個虛基類,建構函式的執行順序仍然是先左後右,自上而下。

6)對於非虛基類,建構函式的執行順序仍是先左後右,自上而下。

7)若虛基類由非虛基類派生而來,則仍然先呼叫基類建構函式,再呼叫派生類的建構函式。

1)共有派生類是基類真正的子類,它完整地繼承了基類的功能。要求公有派生。

2)在基類的物件可以使用的地方,都可以用派生類的物件來替代,但只能使用從基類繼承來的成員

3)派生類物件可以賦值給基類物件

4)派生類物件可以初始化基類物件的引用

5)派生類物件的位址可以賦給指向基類物件的指標

6)如果函式的形參是基類物件或基類物件的引用,在呼叫函式時可以用派生類物件作為實參

1)c++中,編譯時多型性主要通過函式過載和運算子過載實現,執行時多型性主要是通過虛函式實現的

2)c++規定:基類的物件指標可以指向它公有派生的物件,但是當其指向公有派生類物件時,它只能訪問派生類從基類繼承來的成員,不能訪問公有派生類 中定義的成員

3)虛函式是基類中的成員函式,加上關鍵字virtual,並在派生類中被過載

4)最好在對派生類的虛函式進行重新定義時也加上關鍵字virtual

5)乙個虛函式無論被公有繼承多少次,它仍然保持其虛函式的特性

6)虛函式必須是其所在類的成員函式,而不能是友元函式,也不能是靜態成員函式,因為虛函式呼叫要靠特定的物件來決定啟用哪個函式

7)內聯函式不能是虛函式,因為內聯函式是不能在執行中動態確定其位置的。即使虛函式在類的內部定義,編譯時仍將其看作是非內聯的

8)建構函式不能是虛函式,但是析構函式可以是虛函式,並且通常說明為虛函式

9)雖然派生類的析構函式與基類的析構函式名字不相同,但是如果將基類的析構函式定義為虛函式,由該基類所派生的所有派生類的析構函式也都自動成為 虛函式

10)在派生類中重新定義虛函式時,如果僅僅返回型別不同,其餘均相同,系統會給出錯誤資訊;若僅僅函式名相同,而引數的個數、型別或順序不同,系 統將它作為普通的函式過載,丟失虛函式特性

1)考慮到派生類的需要,在基類中預留乙個函式名,具體功能由派生類定義
1)如果乙個類至少有乙個純虛函式,那麼這個類稱為抽象類

2)抽象類只能作為其他類的基類使用,不能建立物件

3)不能從具體類中派生出抽象類

4)抽象類不能作為函式的引數型別、函式返回型別、顯示轉換的型別

5)可以宣告指向抽象類的指標或引用

6)如果派生類中沒有定義純虛函式的實現,而派生類只是繼承基類的純虛函式,則這個派生類仍然是乙個抽象類

1)在函式模板中允許使用多哥型別引數

2)在template語句與函式模板定義語句之間不允許插入別的語句

3)同一般函式一樣,函式模板也可以過載

4)函式模板與同名的非模板函式可以過載。呼叫順序是首先找乙個引數完全匹配的非模板函式,找到就呼叫,否則尋找函式模板,將其實例化,產生模板函式

1)在類模板外定義成員函式時,若成員函式中有型別引數存在,則a.需要在成員函式定義前進行模板宣告 b.在成員函式名前加上「類名《型別引數》::」

2)每個類模板定義之前,都需要在前面加上模板宣告template ,使用類模板時,必須在類模板名字後面加上《型別引數》 stack3)模板類可以有多個型別引數

C語言要點總結 二

1.malloc 函式和calloc 函式的區別是前者不初始化所分配的記憶體空間,而後者會初始化所分配的記憶體空間的每一位為零。2.在程式退出main 函式後,要想在進行一些操作,需要借助c庫函式atexit 利用atexit 函式可以在程式終止前完成一些其他的操作。如果將一組函式指標傳遞給atex...

C 讀寫檔案要點總結

1 匯入標頭檔案fstream和string 2 建立檔案流file,輸入使用ifstream型別,輸出使用ofstream型別 3 呼叫file.open 開啟檔案 4 使用getline 逐行讀取輸入檔案中的字元 5 使用 操作符將字串寫入到檔案流中 6 呼叫file.close 關閉檔案。vo...

C 複習要點總結之 友元

在c 中,類的成員訪問許可權有三種,private,protected,public。private 類中的private成員只能夠在本類中或者友元訪問,子類或外界無法訪問私有成員。protected 類中的protected成員只允許本類或者子類中訪問,外界無法訪問,定義類時如果希望成員被子類繼承...