C 學習筆記 1 複製建構函式

2021-10-23 05:57:44 字數 1128 閱讀 7426

classcomplex

;complex c1;

//呼叫預設無參建構函式

complex c2

(c1)

;//呼叫預設的複製建構函式,將c2初始化成和c1一樣

如果定義的自己的複製建構函式,則預設的複製建構函式不存在。

class

complex

complex

(const complex & c)};

complex c1;

complex c2

(c1)

;//呼叫自己定義的複製建構函式,輸出copy constructor called

不允許有形如x::x(x)的建構函式。

class

csample

//錯,不允許這樣的建構函式

};

當用乙個物件去初始化同類的類乙個物件時。

complex c2

(c1)

;complex c2 = c1;

//初始化語句,非賦值語句

如果某函式有乙個引數是類a的物件,那麼該函式被呼叫時,類a的複製建構函式將被呼叫。

classa;

a(a & a)};

void

func

(a a1)

intmain()

//程式輸出結果為:

//copy constructor called

如果函式的返回值是類a的物件時,則函式返回時,a的複製建構函式被呼叫:

classa;

a(const a & a)};

void

func()

intmain()

//程式輸出結果為:

//copy constructor called

//4

站在巨人的肩上

北京大學資訊科技學院《程式設計實習》

c 學習 複製建構函式

複製建構函式是個非常微妙的函式,如果不能深刻理解它,可是會出現很多莫名奇妙的錯誤,下面通過乙個程式來詳細的介紹其中的奧妙。1 c 中的隱士成員函式 1 預設建構函式,如果沒有定義 2 複製建構函式,如果沒有定義 3 賦值操作符,如果沒有定義 4 預設析構函式,如果沒有定義 5 位址操作符,如果沒有定...

c 學習 複製建構函式

複製建構函式是個非常微妙的函式,如果不能深刻理解它,可是會出現很多莫名奇妙的錯誤,下面通過乙個程式來詳細的介紹其中的奧妙。1 c 中的隱士成員函式 1 預設建構函式,如果沒有定義 2 複製建構函式,如果沒有定義 3 賦值操作符,如果沒有定義 4 預設析構函式,如果沒有定義 5 位址操作符,如果沒有定...

C 學習筆記之建構函式(三)拷貝(複製)建構函式

定義 使用類的乙個物件來構造和初始化另乙個物件,這另乙個物件之前是不存在的。要注意理解拷貝 複製 和賦值的區別,拷貝和複製時另乙個物件之前是不存在的,而賦值是兩個物件都構造好了。如 a a a b a a b a 這是拷貝 a a a b b a 這是賦值 拷貝建構函式的過載宣告如下 a const...