J'utilise généralement des fonctions virtuelles pures pour que les méthodes requises par mon code fonctionnent correctement. Par conséquent, je crée des interfaces, puis d'autres utilisateurs implémentent leurs classes dérivées. Les classes dérivées ont uniquement ces fonctions virtuelles comme publiques alors que certaines méthodes supplémentaires devraient être implémentées comme privées car mon code ne les appelle pas. Je ne sais pas si cela peut être considéré comme une bonne pratique de la POO (existe-t-il un modèle de conception?). Quoi qu'il en soit, ma question est: Un utilisateur peut-il surcharger une fonction virtuelle pure?Surcharge de fonction virtuelle pure
à savoir
class Base
{
public:
Base();
virtual ~Base();
virtual void foo(int,double)=0;
};
class Derived:
public Base
{
private:
// methods
public:
Derived();
virtual ~Derived();
virtual void foo(int, double, double); //this doesn't work
};
Une solution pourrait être:
virtual void foo(int,double,double=0)=0;
dans la classe de base, mais il est très limité. Qu'en pensez-vous?
Les surcharges de fonctionnement représentent une ** API différente **. Une classe de base abstraite représente une ** API cohérente **. Donc non, cela n'a pas de sens. –
Votre exemple ne manque-t-il pas 'class Derived: Base'? – nonsensickle
@nonsensical: à droite, je viens d'éditer. merci – Ale