questions sur la liste d'initilialisation du constructeur
Bonjour à tous,
dans cette FAQ, il est écrit que:
Citation:
Code:
1 2 3 4
| Fred::Fred() : x_()
{
x_ = n'importe quoi;
} |
Dans ce cas, l'expression
n'importe quoi provoque la création d'un objet temporaire
Etant sous-entendu que
Code:
1 2 3
| Fred::Fred(valeur) : x_(valeur)
{
} |
Ne le fait pas.
:arrow: 1ere question:
Les 2 codes suivants sont-ils équivalent (est-ce que ce sera le même code ASM généré):
Code:
1 2 3 4
| Fred::Fred() : x_() // avec liste d'initialisation, mais vide
{
x_ = n'importe quoi; // et une affectation
} |
et
Code:
1 2 3 4
| Fred::Fred() // sans liste d'initialisation
{
x_ = n'importe quoi; // et une affectation
} |
:arrow: 2eme question
Connaissez-vous des cas précis où les 2 codes suivants ne sont pas identiques (pas le même code ASM généré):
Code:
1 2 3 4
| Fred::Fred() // sans liste d'initialisation
{
x_ = n'importe quoi;
} |
et
Code:
1 2 3
| Fred::Fred(valeur) : x_(valeur) // avec liste d'initialisation
{
} |
Parce que ça fait un moment que je cherche, avec des types composés et tout, mais à chaque fois l'asm est le même.