1.C++對傳參合傳返回值時構造的優化處理的總結。
在c++中,傳參和傳返回值時,如果是引用類型,則不用調用拷貝構造函數,直接返回別名。當語句爲一個表達式時,編譯器會選擇優化,將構造函數與拷貝構造合併。在C++中,調用幾次構造函數和拷貝構造函數,就會相應的調用幾次析構函數。只有當一個對象已經存在時,d=f()才調用賦值運算符重載,如果對象不存在,則調用的是構造函數。
2.再完成下面的題目。
Test1中調用了2_次AA的拷貝構造函數,_1次AA的賦值運算符函數的重載。
Test2中調用了2_次AA的拷貝構造函數,_0次AA的賦值運算符函數的重載。
Test3中調用了3_次AA的拷貝構造函數,_0次AA的賦值運算符函數的重載。
class AA
{};
AA f (AA a)
{
return a ;
}
void Test1 ()
{
AA a1 ;
a1 = f(a1);
}
void Test2 ()
{
AA a1 ;
AA a2 = f(a1);
}
void Test3 ()
{
AA a1 ;
AA a2 = f(f(a1));
}