close
複製建構函數(copy constructor)
書上的解釋是"初始化期間將物件複製到最近產生的物件,並不是用在一般的指定期間"(似懂非懂)。
反正就是只能在宣告變數的期間使用。
左邊這張圖為一般呼叫有參建構函數,則右邊這張圖為複製建構函數(就是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);
當我們複製了建構函數,都是指向相同的字串位置,如果想要分開的話,可以使用深層複製(那方法就是在類別中增加複製建構函數的方法)。
檔名:string_class.h
延用上一個範例在public底下新增第16行的這個方法。
檔名:string_methon.h
這個跟有參建構函數類似,只是改了參數的型態。
檔名:string_main_1.cpp
上面為有複製建構函數,下面則沒有複製建構函數的差別。
文章標籤
全站熱搜