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 : 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;
 
};
La classe Compo ne contient qu'une fonction speak qui afiche "Compo::speak"

Dans mon main, je fait cela :
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;
}
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....