Allocation implicite de la memoire lors d'une agrégation par pointeur
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
Code:
1 2 3 4 5 6 7 8 9 10
|
class Base
{
public:
Base();
virtual ~Base();
Compo* m_Compo;
}; |
La classe Compo ne contient qu'une fonction speak qui afiche "Compo::speak"
Dans mon main, je fait cela :
Code:
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;
} |
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 ;) ).
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....