j'ai le code suivant:Deux façons d'appeler le constructeur par défaut
struct B
{
//B() {}
int x;
int y;
};
void print(const B &b)
{
std::cout<<"x:"<<b.x<<std::endl;
std::cout<<"y:"<<b.y<<std::endl;
std::cout<<"--------"<<std::endl;
}
int main()
{
B b1 = B(); //init1
B b2; //init2
print(b1);
print(b2);
return 0;
}
Quand je commence le programme (VS2008, debug) J'ai la sortie suivante:
x:0
y:0
--------
x:-858993460
y:-858993460
--------
Comme vous pouvez le voir b1. x et b1.y ont 0 valeur. Pourquoi? Quelle est la différence entre init1 et init2?
Quand je décommenter constructeur B je la sortie suivante:
x:-858993460
y:-858993460
--------
x:-858993460
y:-858993460
--------
quelqu'un peut-il expliquer la raison de ce comportement? Tnx à l'avance.
Comment cela explique-t-il les différents résultats de 'b1' et' b2'? – sth
Et le dernier cas pour "default-initialize" devrait être "sinon, aucune initialisation n'est effectuée." C'est la différence cruciale ici. – sth
@sth: Non, default-initalize doit réinitialiser les autres objets, le point crucial est que les types POD avec une durée de stockage automatique sans initialiseur explicite ne sont même pas initialisés par défaut. –