Flux rss
Collection CommentÇaMarche.net
Bookmark Ajouter aux favoris / Partager

La création d'objets

En C++, il existe deux façons de créer des objets, c'est-à-dire d'instancier une classe :

  • de façon statique
  • de façon dynamique

La création statique

La création statique d'objets consiste à créer un objet en lui affectant un nom, de la même façon qu'avec une variable :

Nom_de_la_classe Nom_de_l_objet;

Ainsi, l'objet est accessible grâce à son nom...

La création dynamique

La création dynamique d'objet est une création d'objet par le programme lui-même en fonction de ses « besoins » en objets. Les objets ainsi créés ne peuvent pas avoir de nom permettant de les manipuler facilement, les objets créés dynamiquement sont donc repérés par des pointeurs.
La création d'objet dynamique se fait donc par la procédure suivante :

  • définition d'un pointeur vers une classe donnée (celle dont va être instancié l'objet créé dynamiquement)
  • création de l'objet « dynamique » grâce au mot clé new, renvoyant l'adresse de l'objet nouvellement créé
  • affecter cette adresse au pointeur

Voici donc ce à quoi peut ressembler une création d'objet dynamique en C++ :

Nom_de_la_classe * Nom_du_pointeur;

Nom_du_pointeur = new Nom_de_la_classe;

Grâce à ce pointeur il va désormais être possible de manipuler l'objet « dynamique », c'est-à-dire accéder à ses fonctions membres et/ou ses données membres.

  • Tout objet créé dynamiquement, c'est-à-dire avec le mot-clé new devra impérativement être détruit à la fin de son utilisation grâce au mot clé delete. Dans le cas contraire, une partie de la mémoire (celle utilisée par les objets créés dynamiquement) ne sera pas libérée à la fin de l'exécution du programme...
  • Les objets créés de façon statique n'ont pas besoin d'être détruits, ils sont automatiquement supprimés lorsque le programme ne fonctionne plus dans la portée dans laquelle ils ont été définis

Le mot clé delete s'utilise en le faisant succéder du pointeur vers l'objet à supprimer. Suite à la suppression d'un objet, la mémoire qu'il occupait est libérée. Il faut alors affecter la valeur NULL à son pointeur.

Accéder aux données membres d'un objet

L'accès aux données membres d'un objet se fait différemment selon que l'objet a été créé de façon statique ou dynamiquement :

  • Pour les objets créés statiquement, l'accès aux données membres se fait grâce au nom de l'objet, suivi d'un point (.), puis du nom de la donnée membre. Par exemple :
    Nom_de_l_objet.Nom_de_la_donnee_membre = Valeur;
  • Pour les objets créés dynamiquement, l'accès aux données membres se fait grâce au nom du pointeur vers l'objet, suivi d'une flèche point (->) représentée par un moins (-) et un signe supérieur (>), puis du nom de la donnée membre. Par exemple :
    Nom_du_pointeur->Nom_de_la_donnee_membre = Valeur;

Si jamais la donnée membre est un pointeur vers un objet, on peut accéder à ses données membres par l'intermédiaire de l'objet en cours :

Nom_pointeur->Nom_donnee_membre_de_l_objet->Nom_donnee_membre_de_l_objet
																	 = Valeur;

Accéder aux fonctions membres d'un objet

L'accès aux fonctions membres d'un objet se fait comme pour l'accès aux données membres, c'est-à-dire par un point ou une flèche selon la création de l'objet. La fonction membre est suivie de parenthèses, contenant les paramètres, s'il y en a. L'accès à une fonction membre se fait donc de la façon suivante :

  • En statique :
    Nom_de_l_objet.Nom_de_la_fonction_membre(parametre1,parametre2,...);
  • En dynamique :
    Nom_du_pointeur->Nom_de_la_fonction_membre(parametre1,parametre2,...);

Le pointeur courant this

Le mot clé this permet de désigner l'objet dans lequel on se trouve, c'est-à-dire que lorsque l'on désire faire référence dans une fonction membre à l'objet dans lequel elle se trouve, on utilise this.

L'objet courant this est en réalité une variable système qui permet de désigner l'objet courant. Cette variable est passée en tant que paramètre caché de chaque fonction membre.

Ainsi, lorsque l'on désire accéder à une donnée membre d'un objet à partir d'une fonction membre du même objet, il suffit de faire précéder le nom de la donnée membre par this->. Par exemple :

class Toto{
	private :
		int age;

		char sexe[16];

	public :
		void DefineTotoAge(int);

};

void Toto::DefineTotoAge(int age){
	this->age = age;

}

En réalité, lorsque l'on donne des noms différents aux données membres et aux variables utilisées dans les fonctions membres, la variable this est implicite, cela signifie que l'on n'est pas obligé de mettre this-> devant chaque donnée membre.

Dans le cas où l'on désire une fonction membre qui retourne un pointeur vers l'objet dans lequel elle se trouve, la variable this est indispensable :

class Toto{
	private :
		int age;

		char sexe[16];

	public :
		void DefineTotoAge(int);

		Toto * RetourneToto();

};

void Toto::DefineTotoAge(int age){
	this->age = age;

}

Toto * Toto::RetourneToto(){
	return this;

}


Dernière modification le mardi 14 octobre 2008 à 17:40:29.Ce document intitulé « Les objets en langage C++ » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Langage C++ - Les pointeurs Comme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition... www.commentcamarche.net/contents/cpp/cpppoint.php3
Langage C - Les variables Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/c/cvar.php3
Les classes en langage C++ La notion d'objet Le langage C est un langage procédural, c'est-à-dire que c'est un langage permettant de définir des données grâce à des variables, et des traitements grâce aux fonctions. L'apport principal du langage C++ par rapport au langage C... www.commentcamarche.net/contents/cpp/cppclass.php3
[Langage C] C/C++ Erreur de segmentationQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux... www.commentcamarche.net/faq/sujet-4791-langage-c-c-c-erreur-de-segmentation
Les files en langage CLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un... www.commentcamarche.net/faq/sujet-8282-les-files-en-langage-c
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
Exec en langage C (Résolu)Bonjour à tous. J'écris un programme en langage C permettant de créer un fichier de config (pour MRTG). Pour cela je dois utiliser la primitive "exec", la commande que je souhaite lancer ressemble à : snmpgetnext -c community IPadress OID. Comment "... www.commentcamarche.net/forum/affich-1623603-exec-en-langage-c
Couleur des texte en langage c (Résolu)Bonjours à tous, Je programme déjà depuis un petit temps en langage c. Seulement j'ai un petit problème, j'aimerais savoir quelle est l'instruction pour changer la couleur d'un texte mais je ne trouve pas de tutoriel. Si quelqu'un pouvait m'aider sa... www.commentcamarche.net/forum/affich-2622033-couleur-des-texte-en-langage-c
Langage C pointeurs, creation de liste. (Résolu)Bonjour a tous. Voila, je rencontre quelaues petits preoblemes en langage C. Le but est de creer des fiches afin de creer une listes les contenant. Il faut ensuite afficher ce que l on a entre dans chaque fiche, puis afficher enfin le nombre de fiches... www.commentcamarche.net/forum/affich-2170245-langage-c-pointeurs-creation-de-liste
Langage C++ - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/cpp/cppvar.php3
Langage C++ - Les types de donnéesLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3
Langage C - Les types de donnéesLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le... www.commentcamarche.net/contents/c/ctype.php3