拷贝构造函数调用 以及不要以“引用方式”返回局部对象

    技术2024-10-15  26

    值方式传递参数的时候会调用拷贝构造函数

    void doWork(Person p){ } void test02(){ Person p; doWork(p); }

    test02中 p会 传递给doWork函数形参p的时候回 调用拷贝构造函数

    值方式返回局部对象,也会调用拷贝构造函数

    class Person{ }; Person doWork2(){ Person p; return p; } void test03(){ Person p = test02(); }

    调用test03,doWork2 返回的时候会调用拷贝构造函数, 创建对象p的复制,p‘ 然后返回给test03中的Person p.

    class Person{ }; Person& doWork2(){ Person p; return p; } void test03(){ Person p = test02(); }

    如果doWork2 返回对象的引用会报错,因为p在doWork2中是临时变量。

    Processed: 0.014, SQL: 9