 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
JBB Guest
|
Posted: Thu Feb 23, 2006 2:06 pm Post subject: Ordre d'appel des constructeurs |
|
|
Bonjour à tous,
J'ai une classe du genre:
class A
{
A(T1 var);
const T2 _var1;
const T3 _var2;
}
A::A(T1 var):
_var1(_var),
_var2(_var1)
{}
Est il sur que le constructeur de _var1 est appellé après celui de _var2 ?
C'est dans la norme? ca depend des compilateurs?
Merci |
|
| Back to top |
|
 |
Marc Boyer Guest
|
Posted: Thu Feb 23, 2006 2:06 pm Post subject: Re: Ordre d'appel des constructeurs |
|
|
Le 23-02-2006, JBB <merci (AT) pasdespam (DOT) fr> a écrit :
| Quote: | Bonjour à tous,
J'ai une classe du genre:
class A
{
A(T1 var);
const T2 _var1;
const T3 _var2;
}
A::A(T1 var):
_var1(_var),
_var2(_var1)
{}
Est il sur que le constructeur de _var1 est appellé après celui de _var2 ?
C'est dans la norme?
|
La norme implique que les constructeurs sont appellés
dans l'ordre de déclaration des membres dans le source.
| Quote: | ca depend des compilateurs?
|
Le respect de la norme est toujours une grande question...
Pour GCC, ça se passe bien.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exiter des sots
IF -- Rudyard Kipling |
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Feb 23, 2006 5:06 pm Post subject: Re: Ordre d'appel des constructeurs |
|
|
On Thu, 23 Feb 2006 14:40:38 +0100, JBB <merci (AT) pasdespam (DOT) fr>:
| Quote: | const T2 _var1;
const T3 _var2;
}
A::A(T1 var):
_var1(_var),
_var2(_var1)
{}
Est il sur que le constructeur de _var1 est appellé après celui de _var2 ?
|
La norme l'impose, et dans ce cas précis, ça m'étonnerait beaucoup
qu'un compilateur ne respecte pas la norme. Et si jamais c'était le
cas, change de compilo.
Attention, le constructeur de "_var1" est également appelé avant celui
de "_var2" dans le code suivant, et certains compilos omettent
d'afficher un warning :
A::A(T1 var):
_var2(_var),
_var1(_var)
{} |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|