此代码发出error C2248: 'A::A' : cannot access private member declared in class 'A'
在VS2010,虽然RVO不需要拷贝构造函数。 为了证明这一点,只是把公开声明A(const A&);
下面,代码将执行没有问题,即使没有对拷贝构造函数的定义。
class A
{
int i;
A(const A&);
public:
A() : i(1) {}
};
A f() { return A(); }
int main()
{
A a;
a = f();
}