Programmation C++/Opérateurs

Un livre de Wikilivres.

On peut facilement utiliser des opérateurs sur une ou des classes. Prenons un exemple très simple: La classe Q (nombre rationnel)!

#include <iostream>
#include <cstdlib>

class Q{
public:
	int num; // stocke le numérateur
	int den; // stocke le dénominateur
	Q(int a=0,int b=1); // le constructeur de la classe Q (le nombre 0 par défaut)
	Q operator+(Q a); // Définit l'opérateur +
	void show(); // Affiche le nombre rationnel
};

Q::Q(int a,int b){ // Le constructeur
	num=a;
	den=b;
}

Q Q::operator+(Q a){
	Q t; // crée un nouveau nombre rationnel
	t.num=num*a.den+den*a.num; // stocke le numérateur des nombres additionnés
        t.den=den*a.den;  // stocke le dénominateur des nombres additionnés.
	return t; // retourne le résultat de l'addition
}

void Q::show(){
     std::cout << num << " / " << den << " = " << (float)(num)/(float)(den) << "\n";
}

int main(){
Q a(3,4),b(1,2); // définit deux nouveaux nombres rationnels a et b
a=a+b; // additionne a et b est stocke le résultat sous a.
a.show(); // affiche a
return 0; 
}

Voilà ! Il est en effet bien pratique d'avoir une classe Q qui permet de stocker des nombres rationnels, mais elle n'est pas très utile, si l'on ne peut pas faire d'opération avec ces objets. L'exemple ci-dessus montre comment il est possible d'utiliser l'opérateur + entre deux objets de la classe Q (nombre rationnel).