Créer des méthodes virtuelles privées en C
On pourrait se demander pourquoi une méthode privée est déclarée virtuelle en C . Un exemple tiré d'un projet open source illustre ceci :
<code class="cpp">class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&); };</code>
Pour comprendre l'avantage de cela, nous nous tournons vers les idées de Herb Sutter :
Ligne directrice n° 2 : Préférer les fonctions virtuelles privées
Selon Sutter, les fonctions virtuelles devraient être déclarées privées. Cela permet aux classes dérivées de remplacer ces fonctions à des fins de personnalisation sans les exposer directement, comme ce serait le cas si elles étaient simplement protégées.
Les fonctions virtuelles sont censées offrir de la flexibilité et ne doivent pas être invoquées directement à partir du code de la classe dérivée. Par conséquent, à moins qu'il n'y ait un besoin spécifique d'invocation directe, privé est le niveau d'accès le plus approprié pour les fonctions virtuelles.
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!