1. 程式人生 > >c++——對象的構造和析構函數、構造函數的分類及調用

c++——對象的構造和析構函數、構造函數的分類及調用

oid ini nbsp 賦值構造 賦值構造函數 classname c++編譯器 機制 vat

1構造函數和析構函數的概念

有關構造函數

1構造函數定義及調用

1)C++中的類可以定義與類名相同的特殊成員函數,這種與類名相同的成員函數叫做構造函數;

2)構造函數在定義時可以有參數;

3)沒有任何返回類型的聲明。

2構造函數的調用

自動調用:一般情況下C++編譯器會自動調用構造函數

手動調用:在一些情況下則需要手工調用構造函數

有關析構函數

3)析構函數定義及調用

1)C++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數

語法:~ClassName()

2)析構函數沒有參數也沒有任何返回類型的聲明

3)析構函數在對象銷毀時自動被調用

4)析構函數調用機制

C++編譯器自動調用

構造函數的分類及調用

C++編譯器給程序員提供的對象初始化方案,高端大氣上檔次。

//有參數構造函數的三種調用方法

class Test

{

private:

int a;

int b;

public:

//無參數構造函數

Test()

{

;

}

//帶參數的構造函數

Test(int a, int b)

{

;

}

//賦值構造函數

Test(const Test &obj)

{

;

}

public:

void init(int _a, int _b)

{

a = _a;

b = _b;

}

};

1無參數構造函數

調用方法: Test t1, t2;

2有參構造函數

有參構造函數的三種調用方法

//有參數構造函數的三種調用方法

class Test5

{

private:

int a;

public:

//帶參數的構造函數

Test5(int a)

{

printf("\na:%d", a);

}

Test5(int a, int b)

{

printf("\na:%d b:%d", a, b);

}

public:

};

int main55()

{

Test5 t1(10); //c++編譯器默認調用有參構造函數 括號法

Test5 t2 = (20, 10); //c++編譯器默認調用有參構造函數 等號法

Test5 t3 = Test5(30); //程序員手工調用構造函數 產生了一個對象 直接調用構造構造函數法

system("pause");

return 0;

}

c++——對象的構造和析構函數、構造函數的分類及調用