我有以下代码:
#include <iostream>
using namespace std;
struct A
{
A() {}
A(const A&) { cout << "copy const" << endl; }
A(A&) { cout << "copy non const" << endl; }
};
A f(A a)
{
return a;
}
int main() {
A a1 = f(A());
}
被调用的是
A(A&)
复制构造函数。为什么传递临时对象时没有调用A(const A&)
复制构造函数?
如果我注释掉A(const A&)
复制构造函数,则程序无法编译。