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 :

Virtual, inline, explicit ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Par défaut Virtual, inline, explicit ?
    Bonjour tous le monde
    j'ai jamais travaillé avec le langage C++, et j'ai un parseur à faire, donc je dois comprendre bien la syntaxe de c++
    ma question est sur les methodes virtual, inline, et explicit
    je veux savoir leurs sens, à quoi servent-ils ? et si possible leurs equivalents par rapport aux modificateurs de java?

    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de Dalini71
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 181
    Par défaut


  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Par défaut
    Oh merci pour votre aide
    justement j'ai cherché sur Google, et j'ai lu la faq, mais j'ai pas bien compris (j'ai bien dit au début, j'ai jamais travaillé avec le C++)
    je veux plus d'explication

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    • virtual Signale au compilateur que le comportement de la fonction est susceptible d'être modifié dans un contexte d'héritage et de polymorphisme. Ce mot aura pour résultat de placer un pointeur vers la fonction en question dans une "vtable" et permettra d'en appeler la version correcte en fonction du type réel d'un objet qui se ferait passer pour un objet du type parent
    • inline demande au compilateur de remplacer tous les appels d'une fonction par le code qui la compose. Le but principal étant d'espérer gagner un peu de temps lors de l'appel: En effet, un appel classique de fonction "perd" un peu de temps à placer une série d'informations dans la pile d'appel avant d'en effectuer le contenu. Quand une fonction est inlinée, ces informations ne sont pas placées en pile d'appel.
    • explicit indique qu'un constructeur doit explicitement être appelé lorsque l'on veut l'utiliser. En effet, un constructeur prenant un argument unique peut servir d'opérateur de conversion implicite du type de l'argument vers le type de la classe dont on défini le constructeur. Comme un tel comportement peut poser problèmes dans certaines circonstances, le fait de déclarer le constructeur explicit empêche la conversion implicite
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Au niveau des équivalences de java, je ne les connais pas trop, mais j'ai au moins retenu ça: En java, toutes les méthodes sont virtual par défaut, sauf (peut-être) quand on les déclare final.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Je rajouterais même pour virtual

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    virtual void f(); //la fonction peut être redéfinie dans une une sous-class
    virtual void f() = 0;la fonction doit être redéfinie dans une une sous-class -> la class devient abstraite
    [troll]
    inline ne doit pas exister en Java qui n'est pas axé performances
    [/troll]

    Quand à explicit je dois avouer que je ne l'utilise jamais, mais finalement ce serait pas plus logique que tout soit explicit par défaut et d'avoir un mot clef implicite? Si quelqu'un peut m'éclairer plus sur l'utilisation d'explicit je suis preneur

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/05/2010, 13h18
  2. inline et virtual
    Par casafa dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2006, 12h49
  3. Virtual-key code
    Par lyrau dans le forum Windows
    Réponses: 2
    Dernier message: 29/03/2003, 19h22
  4. [Turbo C++] Fonciton containing for are not expanded inline
    Par BuG dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 17/02/2003, 06h48
  5. Abstract VS virtual
    Par LE CHAKAL dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2002, 17h50

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