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...