c 構造與析構函式

2021-08-14 23:52:06 字數 2001 閱讀 3426

一. 建構函式與析構函式

1、c++中的類可以定義與類名相同的特殊成員函式,這種函式叫做建構函式。

2、建構函式在定義時可以有引數。

3、沒有任何返回型別的宣告。

4、一般情況下系統會自動呼叫,在一些情況下會收手動呼叫。

建構函式有無參構造,有參構造,(賦值)拷貝建構函式。

#include using namespace std;

class test

test(int a)

test(int a, int b)   // 有參建構函式

// 賦值建構函式(拷貝建構函式)

test(const test &obj)

public:

void print()

private:

int m_a;

int m_b;}; 

int main()

return 0;

}

1、c++中的類可以定義乙個人特殊的成員函式清理物件,這個函式叫做析構函式

語法:~classname()

2、析構函式沒有任何引數也沒有任何返回型別的宣告。

3、析構函式在物件被銷毀時自動呼叫。(棧上的空間會自動釋放,堆上的空間要手動釋放)

二. 物件的初始化與賦值的區別:

test t1(4,5);

test t2 = test(5,6);  // 物件的初始化

t2 = t1;              // 物件的賦值

三.拷貝建構函式的呼叫時機:

1、test t2 = t1;   // 用物件 t1 去初始化t2

2、test t2(t0);    // 用物件 t0 去初始化t2

3、printobj(t0);   // 做函式引數的時候

4、t1 = test();       // 函式返回值返回物件

#include #include using namespace std;

class test

test(int a)

test(int a, int b) // 有參建構函式

test (char *name)

// 賦值建構函式(拷貝建構函式)

test(const test &obj)

~test()

public:

void print()

private:

char m_name[20];

int m_a;

int m_b;};

void printobj(test obj)

test test()

// 賦值建構函式 用乙個物件去初始化另乙個物件

int main()

#endif

return 0;

}

四.兩個特殊的建構函式

1)預設無參建構函式

當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且其函式體為空

2)預設拷貝建構函式

當類中沒有定義拷貝建構函式時,編譯器預設提供乙個預設拷貝建構函式,簡單的進行成員變數的值複製

五.拷貝建構函式與析構函式總結:

1)當類中沒有定義任何乙個建構函式時,c++編譯器會提供預設無參建構函式和預設拷貝建構函式

2)當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式

3)當類中定義了任意的非拷貝建構函式(即:當類中提供了有參建構函式或無參建構函式),c++編譯器不會提供預設無參建構函式

4 )預設拷貝建構函式成員變數簡單賦值

總結:只要你寫了建構函式,那麼你必須用。

構造析構階段性總結 

1)建構函式是c++中用於初始化物件狀態的特殊函式

2)建構函式在物件建立時自動被呼叫

3)建構函式和普通成員函式都遵循過載規則

4)拷貝建構函式是物件正確初始化的重要保證

5)必要的時候,必須手工編寫拷貝建構函式 

c 建構函式與析構函式

一 建構函式 c 提供建構函式來處理物件的初始化,建構函式是一種特殊的成員函式,與其他的成員函式不同,不需要使用者來呼叫他,而是在建立物件時自動執行。它的特點是 函式名和類名相同,沒有返回值,可以過載 如果程式中未宣告,則系統自動產生出乙個預設的建構函式,預設的建構函式時不帶引數的。比如 stude...

C 建構函式與析構函式

c 規定,每個類必須有預設的建構函式,沒有建構函式就不能建立物件。若沒有提供任何建構函式,那麼c 提供自動提供乙個預設的建構函式,該預設建構函式是乙個沒有引數的建構函式,它僅僅負責建立物件而不做任何賦值操作。只要類中提供了任意乙個建構函式,那麼c 就不再自動提供預設建構函式。類物件的定義和變數的定義...

C 建構函式與析構函式

建構函式 對於c 的建構函式,暫且將其分為以下幾類 1.預設建構函式 2.隱士轉換建構函式 3.拷貝建構函式 4.其它建構函式 1.預設建構函式表示沒有任何引數的建構函式,當自定義任何建構函式以後,將不再自動建立預設建構函式,當然,預設建構函式啥也不幹,程式設計師關心係數頓時大跌。關於預設建構函式還...