构造,拷贝构造的N种调用情况

一:C++对传参和传返回值时构造的优化处理。


C++在构造时,对传参和传返回值时,有时编译器会做一些优化:

1:传参时的优化

未优化时情况:

 构造,拷贝构造的N种调用情况

优化时情况:构造,拷贝构造的N种调用情况

二:返回时编译器进行优化:

未优化时:构造,拷贝构造的N种调用情况

优化时:构造,拷贝构造的N种调用情况

3:接受返回值时优化:

未优化时:构造,拷贝构造的N种调用情况

二合一部分优化:

构造,拷贝构造的N种调用情况

三合一终极优化:构造,拷贝构造的N种调用情况


一道例题剖析:

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)); 
}        

                                                                                              Test ·1


构造,拷贝构造的N种调用情况

                                                                                                     Test 2

构造,拷贝构造的N种调用情况

                                                                                                             Test 3


构造,拷贝构造的N种调用情况