C 學習筆記 建構函式詳解

2021-08-25 06:10:55 字數 1437 閱讀 3330

1. '::'的使用

作用:指示作用域; 用作區分不同地方的相同變數名,用於實現類中的未實現方法。

code:

#includeusing namespace std;

int a;

void test()

void showtime()

void showtime() 

3.委託建構函式

目的在於不定義太多的建構函式,所有的建構函式都只用乙個來實現

code:

#includeusing namespace std;

class clock; //委託上乙個clock建構函式實現預設值的構造

void settime(int newh, int newm, int news)

void showtime();

//實現複製建構函式

類名::類(const 類名 &物件名)

**:

#includeusing namespace std;

class point{

public:

point(int xx=0, int yy=0);

point(const point &p);

//析構函式

~point(){

cout《第一次:顯式呼叫複製建構函式,point p2(p1);

第二次:隱式呼叫,當p2傳遞給p時,會先會產生乙個臨時變數,假設為temp;然後呼叫複製建構函式把p2值給temp,整個過程很像point temp(p2);等func1結束,將temp析構;

第三次:隱式呼叫,建立point a(11,11)後,return回來乙個point類,也是先建立乙個臨時變數,也假設為temp;然後呼叫複製建構函式把a值給temp,整個過程很像point temp(a);等return回到主函式,立刻將temp析構;

隱式呼叫時,都是通過乙個臨時無名類的變數,來進行呼叫函式和被調函式間形參和實參的傳遞!!

結果:calling the copy constructor

0:0------------

calling the copy constructor

func1 is runing

0:0object destroyed.

------------

func2 is runing

11:11object destroyed.

------------

11:11object destroyed.

0:0object destroyed.

第三次呼叫複製建構函式不知道為啥不列印除錯資訊- -

可以看出,在func1和func2中,析構函式都將臨時建立的類析構了;並且,在main函式結尾,將p1  p2都析構掉。

C 學習筆記 建構函式

在建立某個類的物件時,由於對該物件的狀態 資料 不很明確,因此需要對其進行初始化。例如,我們要在長方形中建立乙個物件,或者說新建乙個長方形,那麼我們首先要確定它的長和寬,假如我們無法確定它的長和寬,那麼我們是無法構造出乙個長方形來的。例如,我們要構造乙個長方形,由於建構函式要在建立新物件時使用,因此...

C 建構函式詳解

c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...

c 建構函式詳解

c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...