孫鑫VC課程 C 學習筆記

2021-04-17 19:42:04 字數 2181 閱讀 6306

1.c

編譯器不允許在struct內部定義成員函式,c++編譯器則可以

c++編譯器定義的結構體和類的區別:結構體內部成員(資料和方法)都只能是公有的而class則預設是私有的

2.

系統提供的預設建構函式是不帶任何引數的,只生成物件並不進行資料成員的初始化操作

class test

}; //

輸出結果是-58993460,-58993460兩個隨機數

3.

如何檢視是否在程式中發生記憶體洩露?系統自定義的析構函式是否會釋放指標成員指向的記憶體空間?

3.1

通過使用工具外掛程式boundschecker可以有效進行檢視

3.2

構函式只是釋放定義的成員變數,不會釋放指標成員指向的空間,需要手動在析構函式釋放

4.

關於繼承類的建構函式,在子類例項化物件會先呼叫父類的建構函式,如果父類的建構函式有引數,則必須在子類的建構函式進行初始化

5.

c++規定在類中初始化常量和引用必須使用初始化列表

6.

而冒號初始化與函式體初始化的區別在於:

冒號初始化是給資料成員分配記憶體空間時就進行初始化,就是說分配乙個資料成員只要冒號後有此資料成員的賦值表示式(此表示式必須是括號賦值表示式),那麼分配了記憶體空間後在進入函式體之前給資料成員賦值,就是說初始化這個資料成員此時函式體還未執行。

6.類內部函式過載的條件?

函式的引數個數或型別不同(返回值不同以及預設函式引數情況要注意),也就是編譯器根據你提供的條件能知道要載入那個函式

第一種情況:

(1)void output();

(2)int output();

第二種情況:

(1)void output(int a,int b=5);

(2)void output(int a);

以上兩種是典型的過載錯誤

7.資料型別轉換的條件:

資料的記憶體模型是相同的,如int與char,作為強制型別轉換只可能丟失資料,但是可以轉換,而int型和乙個物件資料型別是不能進行型別轉換的

字類指標可以轉換為父類,父類不能轉換為字類

8.c++多型性

接上例:

定義一全域性函式:

void global_breath(animal *pb)

呼叫時:

fish fs;

animal *pa;

pa = &fs;

global_breath(pa); //輸出是animal breath;由於fish是從animal繼承的,因此記憶體首位址是相同的,系統先通過隱式轉換將fish轉換成animal型別指標

//pa實際上和&fs都是指向記憶體的首位址,因此先呼叫animal

如果animal成員函式是virtual breath();那麼此時輸出的就是fish breath,由於c++編譯器的多型性,編譯器將根據引數的型別進行繫結

注意:由於fish是繼承了animal,因此有更多的資料成員,在做型別轉換的時候可以將fish轉換成animal,這樣只是損失部分資料,但不能將animal轉換成fish,記憶體模型不匹配

9.c++引用與指標的區別

int  a = 9;

int &b = a; //b作為a的引用,引用在定義時必須賦初值

int *pa = &a; //引用相當於變數a的別名,不占用新的記憶體空間,pa則需要記憶體空間來儲存a的位址

主要用於函式引數的傳遞,例如change(int &a, int &b);用於改變a,和b的值

10.類定義的標頭檔案也可以包含父類的標頭檔案,並非只是cpp檔案包含.h的標頭檔案

11.virtual在子類不需要加上,子類函式依然還是虛函式。

12.cpp檔案參與編譯,.h檔案不參與編譯,.cpp檔案單獨編譯,生成.obj檔案,link(連線lib)生成.exe檔案

孫鑫VC課程 動態鏈結庫學習筆記

動態鏈結庫學習筆記 一.使用dumpbin在命令窗體檢視dll資訊 1.1檢視dll的匯出函式 當前工程目錄下 debug dumpbin exports dll 1.2檢視可執行程式用到的動態庫,以及相關的函式資訊 1.2.1 當前工程目錄下 debug dumpbin imports exe 1...

孫鑫VC 講座筆記 2 C

1,c語言中,結構體struct中不能包括函式的,而在c 中struct中可以包括函式。2,c 中結構體和類可以通用,區別主要表現在訪問控制方面 struct中預設是public,而 class中預設的是private。3,建構函式最重要的作用是建立物件的本身,c 中每個類可以擁有多個建構函式,但必...

孫鑫VC 講座筆記 2 C

1,c語言中,結構體struct中不能包括函式的,而在c 中struct中可以包括函式。2,c 中結構體和類可以通用,區別主要表現在訪問控制方面 struct中預設是public,而 class中預設的是private。3,建構函式最重要的作用是建立物件的本身,c 中每個類可以擁有多個建構函式,但必...