2
从前一篇文章中,我了解到,至少有两种方法可以声明一个没有默认构造函数的数组。像这样关于C++中没有默认构造函数的数组的一个问题
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)};
}
有人可以向我解释为什么会发生这种情况?
@skydoor:现在你已经问了100个问题:-) – 2010-03-06 16:33:18