复制构造函数小问题

如果类中成员函数的参数和返回值都是此类对象,那么复制构造函数调用两次?

是的,一次发生在参数传入,一次发生在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);
}

先从语法上,是会发生拷贝构造,但是编译器会有一些优化处理。
同时语法也可以改进,比如传递引用来减少拷贝