Depuis la publication précédente, j'ai appris qu'il y a deux façons, au moins, de déclarer un tableau sans constructeurs par défaut. Comme ceciUne question à propos du tableau sans constructeur par défaut en 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)};
J'ai également appris que le premier construira l'objet en utilisant le paramètre directement et que le second constructeur de copie est utilisé ici. Cependant, quand je teste le code ci-dessous. Je rends le constructeur de copie privé. Je m'attends à voir la différence de l'utilisation du constructeur de copie. Mais ce n'est pas ce à quoi je m'attendais. Aucune des deux déclarations ne fonctionne.
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)};
}
Quelqu'un peut-il m'expliquer pourquoi cela se produit-il?
@skydoor: Maintenant vous avez posé exactement 100 questions :-) –