OVH Cloud OVH Cloud

Création d'objet

4 réponses
Avatar
ByB
Bonjour,

J'ai trouvé un listing C++ où une fonction fait la chose suivante :



void CreeObjet()
{

new MonObjet();

}

J'aimerais comprendre à quoi peut servir ce genre de code. J'imagine
que le fait de créer MonObjet permet éventuellement de provoquer
l'exécution de son constructeur et donc de procéder à des
initialisations, mais comment peut-on ensuite manipuler cet objet,
puisqu'on ne récupère pas l'occurrence dans une variable ? De plus,
MonObjet n'est-il pas détruit (comme objet local) dès la sortie de la
fonction CreeObjet ?

Merci.

--
Vu la sinistrose de ce début de siècle, il serait bon de se préoccuper
de toutes les issues possibles.

4 réponses

Avatar
Jean-Marc Bourguet
"ByB" writes:

Si Loïc Joly voulait passer inaperçu, c'est raté ! En effet, grace à lui,
le monde entier sait désormais que

void CreeObjet()
{
new MonObjet();
}
J'aimerais comprendre à quoi peut servir ce genre de code. J'imagine que
le fait de créer MonObjet permet éventuellement de provoquer l'ex écution
de son constructeur et donc de procéder à des initialisations,


On peut imaginer que parmi ces initialisation, l'objet se référence
auprès d'un gestionnaire d'objets qui permettra par la suite de le
récupérer.



Comment cela se fait-il ? Avez vous un exemple simple pour voir comment un
objet peut se référencer lui-même ?



class ByB;

std::vector<ByB*> theByBs;

ByB::ByB()
{
theBybs.push_back(this);
}



Avatar
Loïc Joly

void CreeObjet()
{

new MonObjet();

}

J'aimerais comprendre à quoi peut servir ce genre de code. J'imagine que
le fait de créer MonObjet permet éventuellement de provoquer l'exécution
de son constructeur et donc de procéder à des initialisations,


On peut imaginer que parmi ces initialisation, l'objet se référence
auprès d'un gestionnaire d'objets qui permettra par la suite de le
récupérer.

De plus, MonObjet n'est-il pas détruit
(comme objet local) dès la sortie de la fonction CreeObjet ?


Le pointeur est détruit dès la fin de la ligne. L'objet pointé non.

--
Loïc

Avatar
ByB
Si Loïc Joly voulait passer inaperçu, c'est raté ! En effet, grace à
lui, le monde entier sait désormais que

void CreeObjet()
{

new MonObjet();

}

J'aimerais comprendre à quoi peut servir ce genre de code. J'imagine que le
fait de créer MonObjet permet éventuellement de provoquer l'exécution de
son constructeur et donc de procéder à des initialisations,


On peut imaginer que parmi ces initialisation, l'objet se référence auprès
d'un gestionnaire d'objets qui permettra par la suite de le récupérer.



Comment cela se fait-il ? Avez vous un exemple simple pour voir comment
un objet peut se référencer lui-même ?

Merci.


--
LA FINALITE VALORISE LES PROCESSUS ORGANISATIONNELS DES BENEFICIAIRES


Avatar
ByB
J'ai envie de hurler à la face du monde que Jean-Marc Bourguet a dit le
04/02/2006 que
"ByB" writes:

Si Loïc Joly voulait passer inaperçu, c'est raté ! En effet, grace à lui,
le monde entier sait désormais que

void CreeObjet()
{
new MonObjet();
}
J'aimerais comprendre à quoi peut servir ce genre de code. J'imagine que
le fait de créer MonObjet permet éventuellement de provoquer l'exécution
de son constructeur et donc de procéder à des initialisations,


On peut imaginer que parmi ces initialisation, l'objet se référence
auprès d'un gestionnaire d'objets qui permettra par la suite de le
récupérer.



Comment cela se fait-il ? Avez vous un exemple simple pour voir comment un
objet peut se référencer lui-même ?



class ByB;

std::vector<ByB*> theByBs;

ByB::ByB()
{
theBybs.push_back(this);
}


Merci beaucoup !

--
On reconnaît le rouquin aux cheveux du père et le requin aux dents de
la mère.
[Pierre Desproges]