OVH Cloud OVH Cloud

declarations des données

3 réponses
Avatar
mohamed92000
Bonjour a tous,
ma question est : dans quel cas on déclare un pointeur sur une classe
ou une classe simplement.

class maclasse
{
private :
autreClass* pdonne; ou
autreClass pdonne;
};
merci d'avance

3 réponses

Avatar
Alexandre
c'est très vague comme question. En gros, si tu crée un sous-objet unique,
existant obligatoirement dès que MaClasse est crée, utilise un membre de
type autreClass. Si par contre l'autre objet existe déjà, ou existe de
manière conditionnelle (durant l'execution par ex.) alors il te faudra un
pointeur, ou un champ référence.

Mais tout ça c'est très général, ça dépend beaucoup de ce que tu veux faire.

"mourad" a écrit dans le message de
news:
Bonjour a tous,
ma question est : dans quel cas on déclare un pointeur sur une classe
ou une classe simplement.

class maclasse
{
private :
autreClass* pdonne; ou
autreClass pdonne;
};
merci d'avance


Avatar
Christophe de Vienne
mourad wrote:

Bonjour a tous,
ma question est : dans quel cas on déclare un pointeur sur une classe
ou une classe simplement.

class maclasse
{
private :
autreClass* pdonne; ou
autreClass pdonne;
};
merci d'avance


Quelques pistes :
- On utilise un pointeur si on veut faire du polymorphisme, autrement dit si
on ne connait pas le type réel de la classe à l'avance.
- On utilise un pointeur si on ne veut pas que la définition de la classe
membre soit connue des utilisateurs de la classe contenante.

A+

Christophe

--
Christophe de Vienne
Experience is something you don't get until just after you need it.
Oliver's Law.

Avatar
Alexandre

Il existe une troisième possibilité : la référence
autreClass& pdonne;
Dans ce cas, c'est toujours un lien vers un objet bien identifié (comme
le pointeur), mais il ne peut pas être nul (comme la valeur).

et il ne peut pas changer (alors que le pointeur le peut).