为什么这段代码无法编译?如果我将复制构造函数访问级别更改为公共,就可以并打印“Foo::Foo(int)”。如果我写“Foo instance(0);” 而不是“Foo instance = 0;” 它也会好的。为什么?这种行为的意义何在?
#include <iostream>
struct Foo
{
public:
int i;
Foo(int i) : i(i) { std::cout << "Foo::Foo(int) \n"; }
private:
Foo(const Foo&) { std::cout << "Foo::Foo(const Foo&) \n"; }
};
int main()
{
Foo instance = 0;
}