1. 程式人生 > >C++傳參構造的優化和討論構造拷貝構造N中呼叫情況

C++傳參構造的優化和討論構造拷貝構造N中呼叫情況

C++對傳參和傳返回值時建構函式的優化處理

1.c++形式引數型別和返回值為引用時,會把實參或者返回值引用自動賦給形式引數(返回值)。

2.c++返回值賦值和返回值使用一般會進行編譯器的優化。
3.c++函式引數(或者返回值)賦值時,如果其型別是類並且對應的建構函式存在,那麼自動匹配的建構函式構造目標型別。
例: Test1中呼叫了___次AA的拷貝建構函式,___次AA的賦值運算子函式的過載。
Test2中呼叫了___次AA的拷貝建構函式,___次AA的賦值運算子函式的過載。
Test3中呼叫了___次AA的拷貝建構函式,___次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));
答案:2 , 1;2 ,0;3 ,0。 解析: 兩次拷貝構造,一次賦值運算子的過載
兩次拷貝構造,0次賦值運算子過載
三次拷貝構造,0次賦值運算子過載
開始學習C++感覺還是有點難,看來還得加油努力!