En C++, les classes sont des structures de données qui regroupent des variables et des fonctions membres, aussi appelées méthodes, dans un seul bloc. Elles permettent de créer des objets personnalisés et de pratiquer la programmation orientée objet. Voici une explication de leur fonctionnement :
- Déclaration d'une classe
La déclaration d'une classe en C++ commence par le mot-clé "class" suivi du nom de la classe. Les variables et les méthodes membres sont ensuite définies entre des accolades {}.
Exemple :
class MaClasse {
public:
int maVariable;
void maMethode();
};
- Accès aux membres
Dans une classe, les membres (variables et méthodes) peuvent avoir différents niveaux d'accès : public, protected ou private. Les membres publics sont accessibles de l'extérieur de la classe, tandis que les membres privés ne le sont pas (seulement depuis les méthodes de la classe). Le niveau d'accès "protected" est similaire à "private", mais les membres peuvent également être accessibles par les classes dérivées.
Exemple :
class MaClasse {
private:
int variablePrivee;
protected:
int variableProtegee;
public:
int variablePublique;
void maMethode();
};
- Constructeurs et destructeurs
Les constructeurs sont des méthodes spéciales qui sont exécutées lors de la création d'un nouvel objet. Ils permettent d'initialiser les variables membres de la classe. Le destructeur, quant à lui, est une méthode spéciale exécutée lorsqu'un objet est détruit.
Exemple :
class MaClasse {
public:
MaClasse() { }
~MaClasse() { }
};
- Instanciation d'une classe :
Pour créer un nouvel objet à partir d'une classe, il faut utiliser le mot-clé "new" et appeler le constructeur de la classe. L'objet créé peut ensuite être manipulé via un pointeur ou une référence.
Exemple :
MaClasse *objet = new MaClasse();
- Héritage et polymorphisme :
Le C++ permet aux classes de dériver d'autres classes, ce qui leur permet d'hériter de leurs membres et méthodes. Cela favorise la réutilisation du code et facilite la création de hiérarchies de classes. Le polymorphisme permet aux objets d'avoir des comportements différents en fonction de leur type réel, même s'ils sont manipulés via un type de base commun.
Exemple :
class MaClasseDeBase {
public:
virtual void maMethode() = 0;
};
class MaClasseDerivee : public MaClasseDeBase {
public:
void maMethode() override { }
};