Y a-t-il une raison de différencier les autorisations sur une fonction virtuelle C++ remplacée de la classe de base? Y a-t-il un danger à le faire?Substitution de fonctions virtuelles publiques avec des fonctions privées en C++
Par exemple:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
Le C++ faq dit qu'il est une mauvaise idée, mais ne dit pas pourquoi.
J'ai vu cet idiome dans un code et je crois que l'auteur essayait de rendre la classe finale, basée sur l'hypothèse qu'il n'est pas possible de surcharger une fonction membre privée. Cependant, This article montre un exemple de substitution de fonctions privées. Bien sûr, another part of the C++ faq recommande de ne pas le faire.
Mes questions concrètes:
Est-il un problème technique avec l'aide d'une autre autorisation pour des méthodes virtuelles dans les classes dérivées vs classe de base?
Y a-t-il une raison légitime de le faire?
réinventant "protégé" sommes-nous? –