Maison > développement back-end > C++ > le corps du texte

Pourquoi le compilateur nécessite-t-il `b->A::DoSomething()` au lieu de `b->DoSomething()` dans ce code C ?

DDD
Libérer: 2024-11-05 12:37:02
original
974 Les gens l'ont consulté

Why Does the Compiler Require `b->A::DoSomething()` Au lieu de `b->DoSomething()` dans ce code C ? 
A::DoSomething()` Au lieu de `b->DoSomething()` dans ce code C ? " />

Résolution de surcharge C

Dans l'exemple de code donné, le compilateur nécessite l'utilisation explicite de b->A::DoSomething() au lieu de b ->DoSomething() en raison du concept de "résolution de surcharge".

La résolution de surcharge détermine quelle fonction de surcharge est appelée en fonction du type et du nombre d'arguments. Dans ce cas, le compilateur considère la méthode DoSomething(. ) dans le cadre de la classe B en premier. Puisqu'il existe une méthode avec le même nom et les mêmes paramètres dans B, le compilateur tente de résoudre la surcharge dans B.

Cependant, la méthode DoSomething() dans A est. également une surcharge valide. Pour accéder explicitement à cette surcharge, l'opérateur scope :: est utilisé pour spécifier que la méthode DoSomething() appartient à la classe de base A.

Une solution possible pour éviter ce problème serait de " déroulez" la surcharge de A dans la portée de B à l'aide du mot-clé using. Cela permet effectivement d'accéder à A::DoSomething() directement dans B. Voici un exemple :

<code class="cpp">class B : public A {
public:
    using A::DoSomething;
    // Additional methods or members
};</code>
Copier après la connexion

Maintenant, dans la portée de B, la méthode DoSomething() peut être appelée sans le préfixe A::, car elle est considérée comme une surcharge au sein de B en raison de la directive using.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!