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