(Ho pensato che fosse troppo soggettivo per SO, quindi postare qui ...)
Ho qualche comportamento che posso implementare in vari modi. Almeno due metodi sono mostrati nello snippet di codice qui sotto. Presumi che il membro dei dati m_well sia correttamente impostato in qualche modo al momento della costruzione dell'oggetto.
struct Behavior
{
virtual bool behavesWell() { return true; }
private:
bool m_well;
public:
bool behavesMemberWell() { return m_well; }
};
struct OtherBehavior : public Behavior
{
virtual bool behavesWell() { return false; }
};
Ovviamente quello si basa sulla distribuzione virtuale e l'altro si limita semplicemente al ritorno di un membro di dati.
Un terzo metodo non mostrato potrebbe avere la funzione membro pubblico non virtuale che non restituisce un membro dati fisso, ma invece chiama un virtuale - lasciamo da parte quello scopo per questo scopo.
Che cosa ti porterebbe all'uno o all'altro di questi due metodi di implementazione della funzionalità, in modo che un utente di questa classe possa interrogare il comportamento di un oggetto?