このコードがコンパイルできないのはなぜですか? コピー コンストラクターのアクセス レベルを public に変更すると、問題なく "Foo::Foo(int)" と出力されます。「Foo instance(0);」と書くと 「Foo インスタンス = 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;
}