Bonjour,
J'ai mis un titre un peu pompeux, mais ma question est vraiment simple.
J ai deux classes Base et Compo
La classe Base à un pointeurs vers Compo
La classe Compo ne contient qu'une fonction speak qui afiche "Compo::speak"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Base { public: Base(); virtual ~Base(); Compo* m_Compo; };
Dans mon main, je fait cela :
Ce qui me trouble, c'est que ce code marche parfaitement (pour une fois qu'on parle d'un truc qui fonctionne sur un forum d'entraide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Base.h" int main() { Base oBase; oBase.m_Compo->speak(); Base* pBase = new Base; pBase->m_Compo->speak(); return 0; }).
J'obtient :
Compo::speak
Compo::speak
Question : Le seul et unique new du projet se trouvant dans le main, G++ alloue il la mémoire implicitement ? j ai tres clairement utilise le pointeur Base::m_Compo sans allouer de mémoire. J'avais pris l'habitude (mauvaise ? ) d'écrire dans le constructeur de m_Compo = new Compo; je constate que cela est parfaitement inutile....
Partager