Outils d'utilisateurs

Outils du Site


fonction_virtuel

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

fonction_virtuel [2015/02/16 16:44]
woly
fonction_virtuel [2018/07/20 23:41] (Version actuelle)
winjerome Ajout des liens vers les chapitres précédent/suivant
Ligne 1: Ligne 1:
  
-^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^+[[polymorphisme_et_pointeurs|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[invariant_de_classe|Chapitre suivant]] ^
  
 ====== Fonctions virtuelles ====== ====== Fonctions virtuelles ======
Ligne 59: Ligne 59:
  
  
 +  * destructeur virtuel
 +  * MyClass::foo pour appeler explictement le parent
  
 +===== Redefinition et masquage =====
  
 +Masquage de nom (hide name) = fonction dans la classe derive a le meme nom que la classe parent, et empeche de voir la fonction de la classe parent.
  
 +<code cpp>
 +struct A {
 +    void f();
 +};
 +
 +struct B : A {
 +    void f();
 +};
 +</code>
 +
 +Probleme avec polymorphisme : risque d'erreur sur la fonction appellee.
 +
 +<code>
 +auto p = new B;
 +auto q = static_cast<A*>(p);
 +</code>
 +
 +Differents cas :
 +
 +<code cpp>
 +struct A {
 +    virtual void f();
 +};
 +
 +struct B : A {
 +    virtual void f(int);
 +};
 +</code>
 +
 ++ override + final + signature differente
  
-  * masquage de fonctions 
-  * destructeur virtuel 
-  * MyClass::foo pour appeler explictement le parent 
  
-^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ 
  
-{{tag> Cours C++}}+^ [[polymorphisme_et_pointeurs|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[invariant_de_classe|Chapitre suivant]] ^
fonction_virtuel.1424101449.txt.gz · Dernière modification: 2015/02/16 16:44 par woly