从上一篇文章中,我了解到至少有两种方法可以声明一个没有默认构造函数的数组。像这样
class Foo{
public:
Foo(int i) {}
};
Foo f[5] = {1,2,3,4,5};
Foo f[5] = {Foo(1), Foo(2), Foo(3), Foo(4), Foo(5)};
我还了解到第一个将直接使用参数构造对象,这里使用第二个复制构造函数。但是,当我测试下面的代码时。我将复制构造函数设为私有。我希望看到复制构造函数用法的不同。但这不是我所期望的。这两个声明都不起作用。
class Foo{
public:
Foo(int i) {}
private:
Foo(const Foo& f) {}
};
int main(){
Foo f[5] = {1,2,3,4,5};
Foo f[5] = {Foo(1), Foo(2), Foo(3), Foo(4), Foo(5)};
}
谁能向我解释为什么会发生这种情况?