讨论构造拷贝构造的N中调用情况的问题

来源:互联网 发布:静默卸载软件 bat 编辑:程序博客网 时间:2024/06/07 18:27

C++对传参合传返回值时构造的优化处理

  1. C++形式参数类型和返回值类型如果是引用,那么在传递时,会把实参或者返回值的引用自动 赋值给形式参数(返回值)。

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

Test1中调用了2次AA的拷贝构造函数1次AA的赋值运算符函数的重载。
Test2中调用了2次AA的拷贝构造函数,0次AA的赋值运算符函数的重载。
Test3中调用了3次AA的拷贝构造函数,0次AA的赋值运算符函数的重载。
Test1
Test3