English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ Surcharge d'opérateurs et surcharge de fonctions
L'opérateur d'appel de fonction () peut être surchargé pour les objets de la classe. Lorsque vous surchargez (), vous n'ouvrez pas une nouvelle méthode d'appel de fonction, mais vous créez un opérateur de fonction qui peut transmettre un nombre quelconque de paramètres.
L'exemple suivant montre comment surcharger l'opérateur d'appel de fonction ().
#include <iostream> using namespace std; class Distance { private: int feet; // 0 à l'infini int inches; // 0 à 12 public: // Constructeurs nécessaires Distance(){ feet = 0; inches = 0; } Distance(int f, int i){ feet = f; inches = i; } // Surcharge de l'opérateur d'appel de fonction Distance operator()(int a, int b, int c) { Distance D; // Effectuer des calculs aléatoires D.feet = a + c + 10; D.inches = b + c + 100 ; return D; } // Méthode d'affichage de la distance void displayDistance() { cout << "F: " << feet << " I:" << inches << endl; } }; int main() { Distance D1(11, 10), D2; cout << "Première distance : "; D1.displayDistance(); D2 = D1(10, 10, 10); // invoke operator() cout << "Deuxième distance :"; D2.displayDistance(); return 0; }
Lorsque le code suivant est compilé et exécuté, il produit les résultats suivants :
Première distance : F: 11 I:10 Deuxième distance : F: 30 I:120