8
votes

Comment remplacer la fonction virtuelle dans un bon style? [C ++]

Les gars je sais que cette question est très basique mais j'ai rencontré dans quelques publications (sites Web, livres) différents styles de la fonction virtuelle de remplacement. Ce que je veux dire, c'est: Si j'ai une classe de base:

void f();     


1 commentaires

@James McNellis - Merci, pour une raison d'étrange (et la raison en est que, en Pologne, nous appelons cela écrivant (Dieu pourquoi devons-nous essayer d'être toujours aussi intelligent en Pologne)) J'étais convaincu que la bonne façon d'appeler ce mécanisme. Merci encore.


3 Réponses :


14
votes

C'est purement une question de goût. Certains arguments faibles peuvent être fabriqués sur la valeur de l'auto-documentation de certains styles par rapport à la non-redondance des autres.


1 commentaires

Ravi de voir la première réponse est la meilleure. Notez également que la nouvelle norme ajoute des décorateurs à DOC et vérifiez simplement pourquoi vous surchargez, primordial, cacher, etc.



3
votes

Il n'est pas nécessaire d'ajouter le mot-clé virtuel à une méthode que vous remplacez dans une sous-classe car ce qualificatif ne peut pas être supprimé en l'omettant dans les déclarations de sous-classe.

Il est toutefois bonne pratique de répéter le mot clé virtuel en tant que documents informatiques que les fonctions dérivées sont virtuelles dans la classe de base.

Ceci est également recommandé par le manuel standard de codage «High Integrity C ++» .

qui est lié dans le C ++ FAQ . < / p>


0 commentaires

0
votes

J'utilise personnellement les deux styles: virtuel signifie que la méthode peut être remplacée.

Nous avons donc deux cas:

  • Si vous souhaitez que l'utilisateur de votre classe sache que la méthode peut être remplacée, utilisez le mot-clé virtuel
  • Si vous préférez cacher ce fait (parce que vous fournissez de nouvelles méthodes, par exemple après le modèle de modèle ), n'utilisez pas le mot clé

    Je suppose que c'est encore une autre façon de (AB?) Utiliser le mot-clé.


0 commentaires