À propos de l'instanciation d'un objet

baloo -  
KX Messages postés 19031 Statut Modérateur -
Bonsoir,
Je trouve souvent deux différentante manière pour créer un objet en C++.

MaClass objet1; 
objet1.methode();


ET

MaClass* objet2 = new MaCLass; 
objet2.methode();



Donc je voudrais savoir la différence entre ces deux manières et laquelle est la meilleure ou la plus adaptée.

Merci

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
La différence est sur le type des données.

objet1 est un objet de MaClass, alors que objet2 n'est que le pointeur sur un deuxième objet de MaClass.

Dans le premier cas tu appelles directement le constructeur par défaut puisque le type de la classe est directement connu par ta déclaration, ce qui n'est pas le cas avec le pointeur et dont il faut préciser explicitement de quel type on parle.

Remarque : puisque c'est un pointeur on ne devrait pas avoir objet2.methode(), mais plutôt (*objet2).methode() ou directement objet2->methode()

Après savoir lequel est le mieux, relève plus de la "théorie des pointeurs", car au niveau de l'instanciation en soit, c'est pareil...
1