類的構造和析構函式

2021-10-04 02:40:38 字數 1599 閱讀 6672

建構函式語法:

建構函式函式名和類名相同,沒有返回型別,連void都不可以,但可以有引數,可以過載

析構函式語法:

析構函式函式名是在類名前面加」~」組成,沒有返回型別,連void都不可以,不能有引數,不能過載

class

data

//建構函式(有參的構造)

data

(int n)

//析構函式

1、建構函式分類:

按引數型別:分為無參建構函式和有參建構函式

按型別分類:普通建構函式和拷貝建構函式(複製建構函式)

2、建構函式的呼叫

class data

//建構函式(有參的構造)

data

(int n)

//析構函式(沒有返回值型別 沒有引數 不能過載)

~data()

};void

test02()

## 拷貝建構函式

```cpp

//拷貝建構函式

記住一句話:舊物件 初始化 新物件 才會呼叫拷貝建構函式。

data ob1(10);

data ob2(ob1);//拷貝構造

data ob3 = data(ob1);//拷貝構造

data ob4 = ob1;//拷貝建構函式

注意:下方的就不會呼叫拷貝構造

data ob1(10);

data ob2;

ob2 = ob1;//不會呼叫拷貝構造 單純物件 賦值操作

案例:void test04()

{data ob1(10);//呼叫有參構造

data ob2;//呼叫無參構造

ob2 = ob1;//物件的賦值

cout<

預設建構函式(空) 預設析構函式(空) 預設拷貝建構函式(淺拷貝)

1、如果使用者提供了有參構造 將遮蔽 系統的預設建構函式。

data ob1;//err

2、如果使用者提供了有參構造 不會遮蔽 系統的預設拷貝建構函式。

data ob1(10);

data ob2 = ob1;

ob2.num == 10

3、如果使用者提供了拷貝建構函式 將遮蔽 系統的預設建構函式、預設拷貝建構函式。

data ob1;//err

總結:對於建構函式:使用者一般要實現:無參構造、有參構造、拷貝構造、析構。

類 建構函式和析構函式

一.類 類定義的變數就是物件 1.建構函式 只有 建立物件的時候系統自動呼叫的函式 初始化物件 1 建構函式名與類名相同 2 建構函式沒有返回值 3 建構函式可以過載 注意 關於建構函式 1 如果建構函式被呼叫了,則一定有乙個新物件被建立了 2 如果有乙個新物件被建立,則一定有乙個建構函式被呼叫了 ...

類的建構函式和析構函式

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

類的建構函式和析構函式

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