C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Ordre d'appel des constructeurs

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
JBB
Guest





PostPosted: Thu Feb 23, 2006 2:06 pm    Post subject: Ordre d'appel des constructeurs Reply with 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? ca depend des compilateurs?

Merci
Back to top
Marc Boyer
Guest





PostPosted: Thu Feb 23, 2006 2:06 pm    Post subject: Re: Ordre d'appel des constructeurs Reply with quote



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





PostPosted: Thu Feb 23, 2006 5:06 pm    Post subject: Re: Ordre d'appel des constructeurs Reply with quote



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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.