La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

C++ : fonctions et opérateurs Fonctions –Passage d'arguments –Surcharge Surcharge d'opérateurs.

Présentations similaires


Présentation au sujet: "C++ : fonctions et opérateurs Fonctions –Passage d'arguments –Surcharge Surcharge d'opérateurs."— Transcription de la présentation:

1 C++ : fonctions et opérateurs Fonctions –Passage d'arguments –Surcharge Surcharge d'opérateurs

2 Par référence (propre au C++) void fct(int& a) // Pas de copie de a { a = 4;// a vaut 4 } // Appel de la fonction int b = 3; fct(b); // b vaut 4 Les arguments peuvent être passés à une fonction sous trois formes : Par valeur : ne permet pas de modifier la variable car la fonction travaille sur une copie de la variable d'origine et non sur la variable elle-même ; à éviter absolument avec un type complexe comme une classe car faire une copie de classe n'est pas anodin Par adresse : permet de pallier la limite du passage par valeur mais lourd d'un point de vue syntaxique Par référence : permet de pallier la limite du passage par valeur sans la lourdeur syntaxique ; pour plus de clarté, on rajoute le mot clé "const "si la variable n'est pas modifiée dans la fonction (utile pour les classes) Par adresse void fct(int *pa) // Adresse { *pa = 4;// *pa vaut 4 } // Appel de la fonction int b = 3; fct(&b); // b vaut 4 Par valeur void fct(int a) // Copie de a { a = 4;// a vaut 4 } // Appel de la fonction int b = 3; fct(b); // b vaut toujours 3 Fonction : passage d'argument

3 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 3 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); }; int main() { Vecteur v1(3, 5), v2(6, 7); v1. Deplace(8, 9); v1. Deplace(v2); return 0; } 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; }

4 Surcharge dopérateurs Permet de redéfinir les opérateurs pour toute classe 4 Si est un opérateur binaire, n m peut sinterpréter comme n.operator (m) Ex : n + m sinterprète comme n.operator+( m ) Si est un opérateur unaire, n peut sinterpréter comme n.operator () Ex : n++ sinterprète comme n.operator++() Cas particulier : le compilateur génère un opérateur daffectation ("=") par défaut ; il est souvent nécessaire de le redéfinir La plupart des opérateurs peuvent être redéfinis pour nimporte quelle classe

5 Surcharge dopérateurs : exemple 5 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;} bool operator==(const Vecteur & v); Vecteur & operator=(const Vecteur & v); Vecteur & operator+(const Vecteur & v); friend std::ostream& operator<<(std::ostream& os, const Vecteur& v); }; vecteur.h int main() { Vecteur v1(3, 5), v2(6, 8), v3, v4; v3 = v1 + v2;// Opérateur = et opérateur + v4 = v3; // Opérateur = if (v3 == v4)// Opérateur = = std::cout << « Vecteurs identiques ; cest normal !\n "; std::cout << v4;// Affichage à l'écran ofstream f(« fichier.txt »); f << v4;// Affichage dans un fichier texte f.close(); return 0; } main.cpp #include "vecteur.h" 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 ladresse de lobjet lui-même } Vecteur Vecteur::operator+(const Vecteur & v) { Vecteur vv(m_x + z.m_x, m_y + z.m_y); return vv; } // Attention, syntaxe particulière pour > std::ostream& operator<< (std::ostream& os, Vecteur& v) { os << « Abscisse " << v.m_x << "\n"; os << « Ordonnée " << v.m_y << "\n"; return os; } vecteur.cpp

6 Surcharge dopérateurs 6 +-*/%=! +=-=*=/=%=++-- <><=>===!=&&|| &|^<<>> []newdelete Opérateurs pouvant être redéfinis


Télécharger ppt "C++ : fonctions et opérateurs Fonctions –Passage d'arguments –Surcharge Surcharge d'opérateurs."

Présentations similaires


Annonces Google