Création d'un objet : l'instanciation
Instanciation statique d'un objet
Pour créer un objet télévision :
CTelevision television ;
Cette action de création d'un objet se nomme l'instanciation.
Pour allumer la télévision :
television.allumer();
Instanciation en mémoire dynamique
Comme vous l'avez appris, lorsqu'un processus est en fonctionnement, il utilise divers portions mémoires appelées segments.
Chaque segment est limité selon les options du système et de l'environnement de développement (EDI).
Le segment de tas (heap segment) est disponible pour réserver des espaces mémoires dynamiquement (à la demande).
Ces espaces mémoires peuvent contenir des variables ou des objets, c'est ce qui va nous intéresser.
Pour instancier dynamiquement un objet :
CTelevision *maTele ; // déclaration d'un pointeur non initialisé
maTele = new CTelevision ; // instanciation de l'objet
maTele
est un objet de type CTelevision
.
Grâce à l'opérateur C++ new
, le système a attribué un espace mémoire dans le segment de tas pour y stocker l'objet.
Cette réservation restera active tant que le processus ne libérera pas cet espace.
Attention : Objet dynamique
L'opérateur d'accès à un attribut ou une méthode n'est plus le point (.
) mais l'opérateur flèche ->
.
maTele->allumer() ;
Il est aussi possible de créer des tableaux d'objets en mémoire dynamique :
mesTeles = new CTelevision[20] ;
L'accès à une méthode peut se faire de la manière suivante pour allumer la 3ème télévision :
mesTeles[2].allumer() ;
Remarque :
Vous notez que l'opérateur point à été utilisé car bien que ce soit un pointeur, le formalisme tableau a été utilisé.