如果类中成员函数的参数和返回值都是此类对象,那么复制构造函数调用两次?
是的,一次发生在参数传入,一次发生在return
如果你没有返回值,那么只调用一次
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "A()" << endl; }
A(const A& a) { cout << "A(const A& a)" << endl; }
};
void foo(A a) { }
int main()
{
A a;
foo(a);
}
先从语法上,是会发生拷贝构造,但是编译器会有一些优化处理。
同时语法也可以改进,比如传递引用来减少拷贝