Fonctions membres d'une classe
Une fonction membre (ou méthode) est une fonction définie à l'intérieur d'une classe. Elle a accès à tous les membres (données et fonctions) de la classe pour l'objet sur lequel elle est appelée.
Exemple — getters et setters
#include <iostream>
using namespace std;
class Voiture
{
private:
int Id;
double Vitesse;
public:
Voiture() : Id(0), Vitesse(0) {}
void setId(int id) { Id = id; }
int getId() { return Id; }
void setVitesse(double v) { Vitesse = v; }
double getVitesse() { return Vitesse; }
};
int main()
{
Voiture v;
v.setId(2);
v.setVitesse(300.45);
cout << "Id = " << v.getId() << " - Vitesse = " << v.getVitesse() << endl;
return 0;
}Id = 2 - Vitesse = 300.45
Définir une méthode en dehors de la classe
On peut séparer la déclaration (dans le .h) de la définition (dans le .cpp) en utilisant l'opérateur de résolution de portée ::.
type_retour NomClasse::nomFonction(liste_paramètres) {
// corps
}Exemple — séparation .h / .cpp
// voiture.h
class Voiture {
private:
int Id;
double Vitesse;
public:
Voiture();
void setId(int); int getId();
void setVitesse(double); double getVitesse();
void rouler(double);
};// voiture.cpp
#include <iostream>
#include "voiture.h"
using namespace std;
Voiture::Voiture() : Id(0), Vitesse(0) {}
void Voiture::setId(int a) { Id = a; }
int Voiture::getId() { return Id; }
void Voiture::setVitesse(double v){ Vitesse = v; }
double Voiture::getVitesse() { return Vitesse; }
void Voiture::rouler(double v) { Vitesse += v; }.h) de la définition (.cpp). Cela facilite la maintenance et la compilation séparée.Le pointeur this
this est un pointeur implicite disponible dans toute fonction membre non-statique. Il pointe vers l'objet courant sur lequel la méthode a été appelée.Le pointeur this est utile dans deux situations :
1. Lever l'ambiguïté entre paramètre et membre
class Point {
private:
int x, y;
public:
Point(int x, int y) {
this->x = x; // this->x = membre, x = paramètre
this->y = y;
}
};2. Retourner une référence à l'objet courant (chaînage)
class Point {
private:
int x, y;
public:
Point(int x, int y) : x(x), y(y) {}
void afficher() { cout << x << endl; }
Point& moi() { return *this; } // retourne l'objet lui-même
};
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.