1、複製建構函式的特點
注意:乙個類中一定會有複製建構函式,要麼是自己寫的要麼是編譯器自動生成的,這與預設建構函式有所不同。編譯器自動生成的複製建構函式完成的是物件間的拷貝工作。程式設計師自己寫的複製建構函式完成的並不一定是物件間的複製工作,雖然道理上它應該完成物件間的複製工作,這取決於程式設計師自己。2、複製建構函式起作用的三種情況
//情況一:
complex c2
(c1)
;complex c2 = c1;
//初始化語句,非賦值語句
//情況二:
classa;
a( a & a)
}void
func
(a a1)
intmain()
//情況三
classa;
a(const a & a)};
a func()
intmain()
注意:物件間賦值並不導致複製建構函式被呼叫。
class
cmyclass
;cmyclass
( cmyclass & c)};
intmain()
輸出: c2.n=
5,c3.n=
10
3、常量引用的使用
void
fun(cmyclass obj_
)
這樣的函式,呼叫時生成形參會引發複製構造函式呼叫,開銷比較大。所以可以考慮使用 cmyclass & 引用型別作為引數。如果希望確保實參的值在函式中不應被改變,那麼可以加上const 關鍵字。
void
fun(
const cmyclass & obj)
4、常量引用作為函式形參的好處: 複製建構函式
今天回看了前面的內容,發現這一章掌握的不夠好,就重看了一遍,順便總結一下 無規律總結 複製建構函式用於複製物件,即可以初始化物件,也可以將複製得到的物件作為實參傳遞給函式,多用於初始化。當我們這樣寫 string null bulk 9 9 9 9 在建立null bulk時編譯器先呼叫string...
複製建構函式
拷貝建構函式的標準寫法如下 class base base const base b 上述寫法見得最多,甚至你認為理所當然。那麼如果我們不寫成引用傳遞呢,而是值傳遞,那麼會怎樣?class base base const base b 編譯出錯 error c2652 base illegal co...
複製建構函式
呼叫複製建構函式的情形 在c 中,下面三種物件需要呼叫複製建構函式 1 乙個物件作為函式引數,以值傳遞的方式傳入函式體 2 乙個物件作為函式返回值,以值傳遞的方式從函式返回 3 乙個物件用於給另外乙個物件進行初始化 常稱為賦值初始化 4 編譯器生成臨時物件 一 乙個物件作為函式引數,以值傳遞的方式傳...