IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

masquage de fonction virtuelle


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut masquage de fonction virtuelle
    Bonjour,

    Avec le code ci-dessous, le compilateur borland me sort un warning disant que la fonction f de B masque celle de A.
    Par contre, pour le compilateur visual, tout est correct.

    Lequel des deux a raison et si c'est borland, pourquoi cela peut-il poser un problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class A
    {
       public :
          virtual void f(){};
    };
     
    class B : public A
    {
       public :
          virtual void f(int){};
    };

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    tu es cense redefinir la fonction virtuelle avec les memes parametres.
    ici ta classe B aura deux fonctions f():

    celle qui vient de A et celle de B qui sera f ( int ) mais pas f( ) de A redefinie.

    si tu veux faire une classe C qui herite de B tu sauras redefnir f(int) mais pas f() d'ou le hide.

    na, enfin a mon humble avis bien evidemment.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Y'a pas de compilateur qui a tord, les 2 vont faire pareil, et ça risque de te jouer des tours (donc VC++ devrait te mettre un warning aussi).
    Tu as une explication ici:
    http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Merci à tous les deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C++ - Probleme avec fonction virtuelle
    Par vdumont dans le forum C++
    Réponses: 1
    Dernier message: 20/03/2006, 20h49
  2. Réponses: 2
    Dernier message: 05/03/2006, 19h29
  3. Compilation avec des fonctions virtuel pure
    Par vanitom dans le forum C++
    Réponses: 4
    Dernier message: 16/12/2005, 14h37
  4. Réponses: 2
    Dernier message: 07/10/2004, 17h00
  5. fonctions virtuelles
    Par Mau dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 21/11/2003, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo