Maison > développement back-end > C++ > Comment les classes dérivées peuvent-elles remplacer les fonctions virtuelles pures privées en C ?

Comment les classes dérivées peuvent-elles remplacer les fonctions virtuelles pures privées en C ?

Patricia Arquette
Libérer: 2024-11-08 06:20:02
original
840 Les gens l'ont consulté

How Can Derived Classes Override Private Pure Virtual Functions in C  ?

Fonctions virtuelles pures privées en C

En C, rencontrer des fonctions virtuelles pures privées comme celles de la classe Engine peut être déroutant. Comme la question le suggère, les classes dérivées sont censées fournir des implémentations pour ces fonctions, mais comment peuvent-elles accéder aux membres privés de la classe de base pour ce faire ?

Cependant, la question repose sur une idée fausse : les classes dérivées peuvent en effet remplacer les fonctions virtuelles pures privées. Ils ne pourront peut-être pas les invoquer directement, mais ils peuvent fournir leurs propres implémentations. Cela permet de « séparer la spécification de l'interface de la spécification du comportement personnalisable de l'implémentation ». (Herb Sutter, "Virtuality")

Dans l'exemple donné, l'interface publique se compose de fonctions non virtuelles surchargées qui appellent des fonctions virtuelles non publiques et non surchargées. Ce modèle, connu sous le nom de « Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals », résout le problème du « masquage » des fonctions virtuelles dans les classes dérivées.

Considérez le cas hypothétique où SetStateBool et SetStateInt étaient de pures fonctions virtuelles. avec une interface non virtuelle dans la classe de base. Les classes dérivées devraient protéger les surcharges spécifiques contre le masquage par les nouvelles implémentations. Pour ce faire, ils devraient utiliser la déclaration using.

Cependant, en utilisant des fonctions virtuelles privées, les classes dérivées peuvent remplacer ces fonctions sans se soucier de cacher d'autres méthodes dans la classe de base. Cela simplifie le processus de personnalisation du comportement des fonctions virtuelles dans les classes dérivées.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal