close

複製建構函數(copy constructor)

書上的解釋是"初始化期間將物件複製到最近產生的物件,並不是用在一般的指定期間"(似懂非懂)。

 

反正就是只能在宣告變數的期間使用。

image

左邊這張圖為一般呼叫有參建構函數,則右邊這張圖為複製建構函數(就是motto有內容了再把它複製給別人),可以看到複製的master是指向同一個物件,下面會介紹當你有複製這個動作時所會呼叫的複製建構函數

 

 

函數原型:

//就是宣告了這個方法之後,只要遇到了'複製'這個動作就會自動呼叫。

class_name(const class_name &)   

 

上一個範例為例:

String(const String &)

下面四個定義會呼叫到複製建構函數:     //底下這些都是'複製'看看就好。

String ditto(motto);   

String metto = motto;

String also =   String(motoo);     

String *pstring = new String(motto);

 

image

當我們複製了建構函數,都是指向相同的字串位置,如果想要分開的話,可以使用深層複製(那方法就是在類別中增加複製建構函數的方法)。

檔名:string_class.h

image

延用上一個範例在public底下新增第16行的這個方法。

 

檔名:string_methon.h

image

這個跟有參建構函數類似,只是改了參數的型態。

 

檔名:string_main_1.cpp

image

 

 

image

上面為有複製建構函數,下面則沒有複製建構函數的差別。

arrow
arrow
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()