Fonction surcharge de slection La surcharge de slection

  • Slides: 4
Download presentation
Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes

Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que la liste des arguments diffère class Vecteur { protected: int m_x, m_y; public : Vecteur() {m_x = m_y = 0; } Vecteur(int x, int y) {m_x = x; m_y = y; } void Deplace(int x, int y); void Deplace(const Vecteur& v); }; Vecteur: : Deplace(int x, int y) { m_x += x; m_y += y; } Vecteur: : Deplace(const Vecteur& v) { m_x += v. m_x; m_y + = v. m_y; } int main() { Vecteur v 1(3, 5), v 2(6, 7); v 1. Deplace(8, 9); v 1. Deplace(v 2); v 1. Deplace(10); // Impossible return 0; }

Surcharge d’opérateurs Permet de redéfinir les opérateurs pour un objet quelconque Si D est

Surcharge d’opérateurs Permet de redéfinir les opérateurs pour un objet quelconque Si D est un opérateur unaire, Dn peut s’interpréter comme n. operator D() Ex : n++ s’interprète comme n. operator++() Si D est un opérateur binaire, n D m peut s’interpréter comme n. operator D(m) Ex : n + m s’interprète comme n. operator+( m ) La plupart des opérateurs peuvent être redéfinis pour n’importe quelle classe Cas particulier : le compilateur génère un opérateur d’affectation par défaut ; il est souvent nécessaire de le redéfinir

Surcharge d’opérateurs : exemple vecteur. h class Vecteur { public : protected: int m_x,

Surcharge d’opérateurs : exemple vecteur. h class Vecteur { public : protected: int m_x, m_y; public : Vecteur() {m_x = m_y = 0; } Vecteur(int x, int y) {m_x = x; m_y = y; } bool operator==(const Vecteur & v); Vecteur & operator+(const Vecteur & v); friend std: : ostream& operator<<(std: : ostream& os, const Vecteur& v); }; main. cpp int main() { Vecteur v 1(3, 5), v 2(6, 8), v 3, v 4; v 3 = v 1 + v 2; // Opérateur = et opérateur + v 4 = v 3; // Opérateur = if (v 3 == v 4) // Opérateur = = std: : cout << « Vecteurs identiques ; c’est normal !n "; std: : cout << v 4; ofstream f( « fichier. txt » ); f << v 4; f. close(); return 0; } vecteur. cpp bool Vecteur : : operator==(const Vecteur & v) { return (m_x == v. m_x && m_y == v. m_y); } Vecteur & Vecteur : : operator=(const Vecteur & v) { m_x = v. m_x ; m_y = v. m_y ; return *this; // this contient l’adresse de l’objet lui-même } Vecteur : : operator+(const Vecteur & v) { Vecteur vv(m_x + z. m_x, m_y + z. m_y); return vv; } std: : ostream& operator<< (std: : ostream& os, Vecteur& v) { os << « Abscisse " << v. m_x << "n"; os << « Ordonnée " << v. m_y << "n"; return os; }

Surcharge d’opérateurs Opérateurs pouvant être redéfinis + - * / % = ! +=

Surcharge d’opérateurs Opérateurs pouvant être redéfinis + - * / % = ! += -= *= /= %= ++ -- < > <= >= == != && & | ^ << >> [] new delete ||