Maison  >  Questions et réponses  >  le corps du texte

c++ - Les fonctions du même nom avec des paramètres différents dans une classe dérivée peuvent-elles être déclarées comme fonctions virtuelles

Lorsque la classe de base et la classe dérivée ont des fonctions du même nom, Peu importe que le nombre de paramètres soit identique ou différent, l'objet de la sous-classe appellera toujours directement la fonction du même nom de la classe dérivée. Si vous souhaitez appeler la fonction du même nom de la classe de base, vous devez utiliser le pointeur de la classe de base ou un guillemet. Si vous souhaitez maintenant utiliser le même formulaire d'appel, vous pouvez appeler la version d'implémentation de fonction de la classe dérivée ou la version d'implémentation de la classe de base, vous devez utiliser une fonction virtuelle. Cependant, l'enseignant a dit que seuls les prototypes de fonction le pouvaient. être déclarées comme fonctions virtuelles si elles sont exactement les mêmes. Ah, alors
pour les fonctions du même nom qui ont des nombres ou des types de paramètres formels différents, comment implémenter la fonction ci-dessus ?

世界只因有你世界只因有你2709 Il y a quelques jours1282

répondre à tous(1)je répondrai

  • 欧阳克

    欧阳克2017-06-10 09:50:57

    Vous pouvez le définir comme ceci puis le redéfinir selon vos besoins dans les sous-classes :

    class Base {
    public:
       virtual void print(int) = 0;
       virtual void print(float) = 0;
    };

    La racine de ce problème réside dans la façon dont C++ trouve la fonction. Il doit connaître le nom et les paramètres de la fonction, vous devez donc définir clairement les deux. La valeur de retour peut être vague. Par exemple, la fonction de copie dans une sous-classe peut renvoyer. une sous-classe.

    répondre
    0
  • Annulerrépondre