C 建構函式 拷貝建構函式

2021-07-15 18:19:07 字數 1431 閱讀 3122

建構函式

)。

class

base

private

:int

m_var;

};

建構函式無返回值型別,函式名和型別相同。

拷貝建構函式傳遞引數為引用。

1

class

base2

7 //

拷貝建構函式

8 base(base &ref

) : m_var(ref

.m_var)9

11 private:12

intm_var;

13 };

拷貝建構函式,一般不需要自己編寫,系統預設的拷貝建構函式就能抗住了,但是有些情況需要在構造的時候開闢空間,這時候就需要拷貝建構函式了,如下**是摘自 

林銳 博士的 

高質量c++程式設計指南 

一文。

1

class

string2;

10 //

string 的析構函式

11 string::~string(void

) 12 16

17//string 的普通建構函式

18 string::string(const

char

*str) 19

25 else26

31 }

32 //

拷貝建構函式

33 string::string(const

string &other)

34

關於虛析構

虛析構一般伴隨著多型而產生,多型主要方式就是用基類的指標或引用指向或引用派生類,而形成多型。

但是這樣就會存在乙個問題,當我們析構的時候,由於是基類的指標,就會呼叫的是基類的建構函式,從而造成派生記憶體溢位。為了解決這個問題,引入了虛析構的概念。將基類的建構函式宣告為虛,從而使其在呼叫析構函式的時候能夠準確的呼叫派生類的析構函式。

如下**必須用到虛析構才能準確的析構派生類,並釋放其占有記憶體。

1

class

base2

7 //

虛析構,使基類指標能準確的釋放所指向的派生類裡面的內容

8 virtual

~base()9

11 private:12

intm_b;

13 };14

15 class

derived : public

base16

23 ~derived()24

28 private:29

char

*m_pstr;

30 };31

32 int

main(void)33

建構函式 拷貝建構函式

建構函式可以分為三類 1 不帶引數的建構函式 在函式體中對資料成員賦初值,這種方式使該類的每乙個物件都得到同一組初值 2 帶引數的建構函式 如果使用者希望對不同的物件賦不同的初值,可以採用帶引數的建構函式。在呼叫不同物件的建構函式時從外面將不同的資料傳遞給建構函式,以實現初始化 3 複製建構函式 建...

建構函式 拷貝建構函式

person person 引用就是指標常量 所以person p person const p,引用所以一旦初始化指向某個位址,就不能在改變了。為什麼前面還要加const,因為拷貝建構函式的目的就是將乙個物件的所有屬性拷貝到另外乙個物件,這個物件的屬性不變,加上const 相當於 const pe...

c 建構函式和拷貝建構函式

c 中為什麼要使用建構函式?c 是從c演變過來的,c中存在的是結構體,例如 對點point struct point 但是對點的操作還要在外部使用函式來實現。c 中包括了成員屬性和成員方法,但是由於類的封裝性,不能像普通變數乙個對成員屬性就行初始化,所以使用建構函式。class point doub...