在深入C++對象模型中,對于形如
CObj obj1 = Get(obj2);
的形式,編譯器會在将其改變為如下
Get(obj, CObj& obj1);
将指派操作符左邊的變量作為函數的一個引用參賽,在函數内部改變其值;
如下
傳回類對象的函數
main函數及執行結果

上述代碼,構造函數被調用一次,拷貝構造被調用三次,重載的指派運算符沒有被調用;
調用時機:
構造函數:
CTest obj(10, 20);
拷貝構造函數:
①調用get函數時,将實參傳遞給get函數時,需要調用拷貝構造函數拷貝一個實參obj的副本
②get函數内部, CTest objTemp = obj;
③函數傳回之前,将objTemp的作為拷貝構造的參數拷貝構造obj2;
是以,get函數被改編為如下
是以,當函數的傳回值為類對象時,要注意其構造函數的編寫。