voici la rapide description de mon problème résumé avec des classes
simplifiées à l'extrème :
class T {
T() {}
~T() {}
};
class C {
static T t;
};
Dans mon code, je crée des instances de C de la manière suivante :
C *ptrc1 = new C;
C *ptrc2 = new C;
Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on
T() seulement lors de la première instance de C ?
Après traitement, je supprime les instances de C de la manière suivante :
delete ptrc1;
delete ptrc2;
Question 2 : que se passe-t-il lors de l'appel de ces delete ? Appelle-t-on
~T() lors de la dernière instance de C ?
Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire passer
mon application dans ~T() ?
Question 4 : Le comportement est-il le même si T est une instantiation de
template ?
Merci à tout ceux qui sont très pointus dans ce domaine de me donner un
petit coup de pouce !
Pour les autres, le fait de lire 3 fois ce mail provoque le même effet qu'un
puissant somnifère ;-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ivan Vecerina
"Dee" wrote in message news:bp0hva$q4b$ | voici la rapide description de mon problème résumé avec des classes | simplifiées à l'extrème : | class T { | T() {} | ~T() {} | }; | | class C { | static T t; | };
Une variable de classe statique est comme une variable globale: elle est construite avant l'execution de la fonction main(), et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante : | C *ptrc1 = new C; | C *ptrc2 = new C; | Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on | T() seulement lors de la première instance de C ? Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante : | delete ptrc1; | delete ptrc2; | | Question 2 : que se passe-t-il lors de l'appel de ces delete ? Appelle-t-on | ~T() lors de la dernière instance de C ? Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire passer | mon application dans ~T() ? ~T() sera appele automatiquement apres la fin du programme. Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement compter les instances de C, et effectuer les operations necessaires au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton (voir ce pattern pour des facons de controler la creation et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation de | template ? Oui.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un | petit coup de pouce ! | Pour les autres, le fait de lire 3 fois ce mail provoque le même effet qu'un | puissant somnifère ;-) Moi ca va ;) Mais des details seraint utils pour une analyse plus poussee.
Amicalement, Ivan -- http://ivan.vecerina.com Brainbench MVP for C++ <> http://www.brainbench.com
"Dee" <yannick_donze@hotmail.com> wrote in message
news:bp0hva$q4b$1@news-reader4.wanadoo.fr...
| voici la rapide description de mon problème résumé avec des classes
| simplifiées à l'extrème :
| class T {
| T() {}
| ~T() {}
| };
|
| class C {
| static T t;
| };
Une variable de classe statique est comme une variable globale:
elle est construite avant l'execution de la fonction main(),
et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante :
| C *ptrc1 = new C;
| C *ptrc2 = new C;
| Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on
| T() seulement lors de la première instance de C ?
Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante :
| delete ptrc1;
| delete ptrc2;
|
| Question 2 : que se passe-t-il lors de l'appel de ces delete ?
Appelle-t-on
| ~T() lors de la dernière instance de C ?
Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire
passer
| mon application dans ~T() ?
~T() sera appele automatiquement apres la fin du programme.
Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement
compter les instances de C, et effectuer les operations necessaires
au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton
(voir ce pattern pour des facons de controler la creation
et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation de
| template ?
Oui.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un
| petit coup de pouce !
| Pour les autres, le fait de lire 3 fois ce mail provoque le même effet
qu'un
| puissant somnifère ;-)
Moi ca va ;)
Mais des details seraint utils pour une analyse plus poussee.
Amicalement,
Ivan
--
http://ivan.vecerina.com
Brainbench MVP for C++ <> http://www.brainbench.com
"Dee" wrote in message news:bp0hva$q4b$ | voici la rapide description de mon problème résumé avec des classes | simplifiées à l'extrème : | class T { | T() {} | ~T() {} | }; | | class C { | static T t; | };
Une variable de classe statique est comme une variable globale: elle est construite avant l'execution de la fonction main(), et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante : | C *ptrc1 = new C; | C *ptrc2 = new C; | Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on | T() seulement lors de la première instance de C ? Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante : | delete ptrc1; | delete ptrc2; | | Question 2 : que se passe-t-il lors de l'appel de ces delete ? Appelle-t-on | ~T() lors de la dernière instance de C ? Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire passer | mon application dans ~T() ? ~T() sera appele automatiquement apres la fin du programme. Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement compter les instances de C, et effectuer les operations necessaires au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton (voir ce pattern pour des facons de controler la creation et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation de | template ? Oui.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un | petit coup de pouce ! | Pour les autres, le fait de lire 3 fois ce mail provoque le même effet qu'un | puissant somnifère ;-) Moi ca va ;) Mais des details seraint utils pour une analyse plus poussee.
Amicalement, Ivan -- http://ivan.vecerina.com Brainbench MVP for C++ <> http://www.brainbench.com
Dee
"Ivan Vecerina" a écrit dans le message de news: bp0its$hll$
"Dee" wrote in message news:bp0hva$q4b$ | voici la rapide description de mon problème résumé avec des classes | simplifiées à l'extrème : | class T { | T() {} | ~T() {} | }; | | class C { | static T t; | };
Une variable de classe statique est comme une variable globale: elle est construite avant l'execution de la fonction main(), et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante : | C *ptrc1 = new C; | C *ptrc2 = new C; | Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on
| T() seulement lors de la première instance de C ? Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante :
| delete ptrc1; | delete ptrc2; | | Question 2 : que se passe-t-il lors de l'appel de ces delete ? Appelle-t-on | ~T() lors de la dernière instance de C ? Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire passer | mon application dans ~T() ? ~T() sera appele automatiquement apres la fin du programme. Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement compter les instances de C, et effectuer les operations necessaires au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton (voir ce pattern pour des facons de controler la creation et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation de
| template ? Oui.
OK pour tout ça ! Cela va m'être très utile.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un | petit coup de pouce ! | Pour les autres, le fait de lire 3 fois ce mail provoque le même effet qu'un | puissant somnifère ;-) Moi ca va ;)
Il y a des gens comme ça ;-)
Mais des details seraint utils pour une analyse plus poussee.
Amicalement, Ivan -- http://ivan.vecerina.com Brainbench MVP for C++ <> http://www.brainbench.com
"Ivan Vecerina" <please_use_web_form@ivan.vecerina.com> a écrit dans le
message de news: bp0its$hll$1@newshispeed.ch...
"Dee" <yannick_donze@hotmail.com> wrote in message
news:bp0hva$q4b$1@news-reader4.wanadoo.fr...
| voici la rapide description de mon problème résumé avec des classes
| simplifiées à l'extrème :
| class T {
| T() {}
| ~T() {}
| };
|
| class C {
| static T t;
| };
Une variable de classe statique est comme une variable globale:
elle est construite avant l'execution de la fonction main(),
et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante :
| C *ptrc1 = new C;
| C *ptrc2 = new C;
| Question 1 : que se passe-t-il lors de l'appel de ces "new" ?
Appelle-t-on
| T() seulement lors de la première instance de C ?
Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante
:
| delete ptrc1;
| delete ptrc2;
|
| Question 2 : que se passe-t-il lors de l'appel de ces delete ?
Appelle-t-on
| ~T() lors de la dernière instance de C ?
Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire
passer
| mon application dans ~T() ?
~T() sera appele automatiquement apres la fin du programme.
Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement
compter les instances de C, et effectuer les operations necessaires
au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton
(voir ce pattern pour des facons de controler la creation
et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation
de
| template ?
Oui.
OK pour tout ça ! Cela va m'être très utile.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un
| petit coup de pouce !
| Pour les autres, le fait de lire 3 fois ce mail provoque le même effet
qu'un
| puissant somnifère ;-)
Moi ca va ;)
Il y a des gens comme ça ;-)
Mais des details seraint utils pour une analyse plus poussee.
Amicalement,
Ivan
--
http://ivan.vecerina.com
Brainbench MVP for C++ <> http://www.brainbench.com
"Ivan Vecerina" a écrit dans le message de news: bp0its$hll$
"Dee" wrote in message news:bp0hva$q4b$ | voici la rapide description de mon problème résumé avec des classes | simplifiées à l'extrème : | class T { | T() {} | ~T() {} | }; | | class C { | static T t; | };
Une variable de classe statique est comme une variable globale: elle est construite avant l'execution de la fonction main(), et detruite apres la sortie de celle-ci.
| Dans mon code, je crée des instances de C de la manière suivante : | C *ptrc1 = new C; | C *ptrc2 = new C; | Question 1 : que se passe-t-il lors de l'appel de ces "new" ? Appelle-t-on
| T() seulement lors de la première instance de C ? Non -- deja appele avant le debut de main.
| Après traitement, je supprime les instances de C de la manière suivante :
| delete ptrc1; | delete ptrc2; | | Question 2 : que se passe-t-il lors de l'appel de ces delete ? Appelle-t-on | ~T() lors de la dernière instance de C ? Non.
| Question 3 : si la réponse à Q2 est non, quel moyen ai-je pour faire passer | mon application dans ~T() ? ~T() sera appele automatiquement apres la fin du programme. Pas possible de cette maniere. Mais C() et ~C() pourraient manuellement compter les instances de C, et effectuer les operations necessaires au moment voulu.
Eventuellement, t pourrait etre remplace par un singleton (voir ce pattern pour des facons de controler la creation et la destruction d'un objet).
| Question 4 : Le comportement est-il le même si T est une instantiation de
| template ? Oui.
OK pour tout ça ! Cela va m'être très utile.
| Merci à tout ceux qui sont très pointus dans ce domaine de me donner un | petit coup de pouce ! | Pour les autres, le fait de lire 3 fois ce mail provoque le même effet qu'un | puissant somnifère ;-) Moi ca va ;)
Il y a des gens comme ça ;-)
Mais des details seraint utils pour une analyse plus poussee.
Amicalement, Ivan -- http://ivan.vecerina.com Brainbench MVP for C++ <> http://www.brainbench.com