類的建構函式和析構函式的呼叫順序(一)

2021-08-10 18:34:11 字數 1571 閱讀 3261

知識點一 關於類的建構函式和析構函式:

1、建構函式不必須與類名相同,不具有型別,不返回任何值。

2、建構函式可以過載、便於使用者輸入不同型別的引數。

3、預設建構函式為不含任何引數的建構函式,或稱為「預設建構函式」。

4、先構造的後析構,後構造的先析構。

5、在全域性範圍內定義的物件(所有函式以外定義的物件),它的建構函式在檔案中的所有函式(包括main函式)執行之前呼叫。如果有多個檔案中都定義了全域性物件,這些物件的建構函式的呼叫順序是不確定的。當main函式執行完畢後或者呼叫exit函式時(此時函式終止),呼叫析構函式。

6、物件賦值是指同類物件所有資料成員的賦值,不對成員函式賦值(函式只是**段,不需要也五福賦值)。

7、類的資料成員中不能包括動態分配的資料。

先貼一段**:

#include "stdafx.h"

#include

using

namespace

std;

class class1

class1(int index) :_index(index)

~class1()

class1& operator=(const class1& other)

class1& operator=(class1&& other)

private:

int _index;

};int _tmain(int argc, _tchar* argv)

return

0;}

執行結果:

create

destroy0 //1

create1 //2

create2 //3

create3 //4

operator= from1to

2//5

operator= from3to

2destroy2

destroy1 //6

解析1:關於類的構造和析構

表示該類被構造,在該**段執行結束,該類被析構;第二段中,先將上述所有的類構造後,在**段結束時,呼叫析構函式,順序為先構造的後析構。

c++:類的建構函式和析構函式

知識點

二、拷貝建構函式:

1、拷貝建構函式時一種特殊的建構函式,實現物件的複製。如果使用者自己未定義複製建構函式,編譯器自己提供乙個預設的複製建構函式,其作用是簡單的複製類中的每個資料成員,被稱為「淺拷貝」,就是對於有指標資料的成員所指向的記憶體單元的資料是不能被預設拷貝過去的。

2、其形式為:類名 物件一 物件二,如:box::box(const box &b))

3、當建構函式涉及到動態儲存分配空間時,要自己寫拷貝建構函式,並且要深拷貝。主要是拷貝指標指向的記憶體單元的內容。

解析2:拷貝建構函式:

obj2 =obj1;      //5

類的建構函式和析構函式

1.把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。2.建構函式 析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首 以示區別。3.建構函式與析構函式都沒有返回值型...

類的建構函式和析構函式

類的資料成員是私有的,所以不能使用常規的賦值方法,像結構體那種的。一般來講。最好在建立物件的同時,對它進行初始化。例如 stock gift gift.buy 10,22.22 這種情況下,company 沒被賦值。程式宣告物件時,自動呼叫建構函式。一定不能將類成員名稱用作建構函式的引數名。建構函式...

類的建構函式和析構函式

1.類建構函式和析構函式的特點 2.類建構函式 專門用於構造新物件,將值賦予它們的資料成員。建構函式是一種特殊的類成員函式,在建立類物件時被呼叫。建構函式的名稱和類名相同,但通過函式過載,可以建立多個重名的建構函式,條件是每個函式的引數列表都不同。1 預設建構函式 每個類必須有乙個建構函式,若未顯示...