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'objets 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éer
- affecter cette adresse au pointeur
Voici donc ce à quoi peut ressembler une création d'objets 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.
|
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 et son pointeur se voit affecter la valeur NULL.
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_du_pointeur->Nom_de_la_donnee_membre_objet->Nom_de_la_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, si 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_donnee_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 est pas obligé de mettre this-> devant chaque donnée membre.
Dans le cas ou 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; }
Ajouter aux Favoris Ajouter aux votre page
Acceuil | Forum| Contactez-Nous | Annace |Chat| Music |Radios|Sockets |Protocoles|Windows NT
Langage C |Langage C++ | Assembleur | Java | Perl |Pascal/delphi | Visual basic|MERISE | SQL| JDBC| ODBC
ASP|CGI |HTML |DHTML |XML|Javascript |JSP |PHP|Servlets |VBScript |WAP |UNIX |Linux |MacOS|Windows 9x
Assemblage-PC |Modèle relationnel|Histoire-PC|Fonctionnement-PC|photo pour rire|MS-Dos|Architecture-PC
Flash MX |Word-2003|Power Point|Excel|Langage C|Langage Java|Visual Basic|La base XP | programming
Physique Arabic partie I|Programation en arabe|Physique Français|Internet| Sécurité Informatique
HTML |Agebre en Français|Math Français partie I|Physique Arabic partie II| الطرق العددية
Electricité| Math Français partie II|Math en Arabic|Agebre en Arabic| الأعداد العقدية
Tous les cours informatiques en vidéos |Droit Informatique |logiciels
Tous les cours physiques en vidéos |Microsoft office
Cours math en vidéos | Msn en ligne
TV Live
Autoformations les cours informatiques en vidéos gratuitement
:: Copyright © 2008 http://www.autoformations.co.cc All rights reserved ::