OVH Cloud OVH Cloud

ordre de creation et de destruction des variables globales

5 réponses
Avatar
stat
Bonjour si dans un fichier j'ai des objet globaux :

ClassA A1;
ClassA A2;


Est-il correct que A1 sera toujours cree avant A2 ?
Et pour la destruction A2 sera toujours detruit avant A1 ?

Merci beaucoup.

--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net

5 réponses

Avatar
Andre Heinen
On Thu, 02 Jun 2005 16:09:58 +0100, "stat" wrote:

Bonjour si dans un fichier j'ai des objet globaux :

ClassA A1;
ClassA A2;


Est-il correct que A1 sera toujours cree avant A2 ?


Oui. Les variables globales d'une même unité de compilation sont
créées dans l'ordre où elles apparaissent dans le source.

Si elles sont dans des unités de compilations différentes, il n'y a
pas de garantie.

Et pour la destruction A2 sera toujours detruit avant A1 ?


Oui. Les variables globales sont détruites dans l'ordre inverse de
leur création.

--
André Heinen
Mon e-mail, encodé ROT13: n qbg urvara ng rhebcrnayvax qbg pbz
La FAQ: http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/

Avatar
stat
Merci beaucoup.

--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net
Avatar
Dimitri Papadopoulos-Orfanos
Bonjour,

Bonjour si dans un fichier j'ai des objet globaux :

ClassA A1;
ClassA A2;


Est-il correct que A1 sera toujours cree avant A2 ?
Et pour la destruction A2 sera toujours detruit avant A1 ?


De manière générale, il faut éviter les objets globaux. En théorie ça
marche effectivement à l'intérieur d'une unité de compilation. Le
problème c'est que :
1) On a tendance à l'oublier dès qu'apparaissent les unités de
compilation multiples (blibliothèques).
2) Sur des vieux systèmes (certains HP-UX en particulier) le
constructeur peut ne pas être appelé.

Dimitri

Avatar
Dimitri Papadopoulos-Orfanos
Est-il correct que A1 sera toujours cree avant A2 ?
Et pour la destruction A2 sera toujours detruit avant A1 ?



Voir par exemple (en anglais) :
http://www.informit.com/guides/content.asp?g=cplusplus&seqNum!2

Dimitri


Avatar
stat
De manière générale, il faut éviter les objets globaux. En théorie ça marche
effectivement à l'intérieur d'une unité de compilation. Le problème c'est que


oui je connais les problemes des objets globaux, merci.

--
This is an automatic signature of MesNews.
Site : http://www.mesnews.net