Ben, c'est ce que permet une fonction membre virtuelle. Donc tu parles de la même chose. Personnellement, je ne connais que deux types de polymorphismes : statique, dynamique. Le premier est résolu à la compilation (en C++, il est obtenu à l'aide de templates) ; le second à l'aide de méthodes virtuelles.
Pour ce qui est de l'héritage autre que publique, je ne vois pas trop son intérêt par rapport à la composition...
L'héritage privé est l'héritage canonique. C'est pour ça que c'est sa visibilité par défaut en C++. L'intérêt de ce type d'héritage réside dans la dérivation de templates, du genre :
#include <string>#include <vector>classstring_list:privatestd::vector<std::string>{usingstd::vector<std::string>::cbegin;usingstd::vector<std::string>::cend;}/* class string_list */;
Une composition, dans ce cas, pourrait introduire une indirection, et plus de code (donc statistiquement plus de bogues).
Pour moi le fait de devoir introduire des contraintes dans une définition est un inconvénient.
Et malheureusement, la plupart des développeurs pensent comme toi : à mort la rigueur ; personne ne va oser faire ça ; les mutex c'est pour les fillettes ; tout est publique, je n'ai rien à cacher.
Forcer un type permet d'assurer que le code n'échouera pas bêtement.
J'aime être certain que je ne créé pas de variable sans le savoir, en me trompant en tapant la variable.
J'aime savoir si la classe que j'utilise est copiable, clonable, si ces attributs sont en lecture seule ou non, si je peux la dériver, etc. J'aime la certitude, circonscrire les risques, là où tu semble te délecter du risque maximal.
[^] # Re: Framework web
Posté par LupusMic (site web personnel, Mastodon) . En réponse à la dépêche Première beta de POCHE 1.0 disponible. Évalué à 1.
Ben, c'est ce que permet une fonction membre virtuelle. Donc tu parles de la même chose. Personnellement, je ne connais que deux types de polymorphismes : statique, dynamique. Le premier est résolu à la compilation (en C++, il est obtenu à l'aide de templates) ; le second à l'aide de méthodes virtuelles.
L'héritage privé est l'héritage canonique. C'est pour ça que c'est sa visibilité par défaut en C++. L'intérêt de ce type d'héritage réside dans la dérivation de templates, du genre :
Une composition, dans ce cas, pourrait introduire une indirection, et plus de code (donc statistiquement plus de bogues).
Et malheureusement, la plupart des développeurs pensent comme toi : à mort la rigueur ; personne ne va oser faire ça ; les mutex c'est pour les fillettes ; tout est publique, je n'ai rien à cacher.
Forcer un type permet d'assurer que le code n'échouera pas bêtement.
J'aime être certain que je ne créé pas de variable sans le savoir, en me trompant en tapant la variable.
J'aime savoir si la classe que j'utilise est copiable, clonable, si ces attributs sont en lecture seule ou non, si je peux la dériver, etc. J'aime la certitude, circonscrire les risques, là où tu semble te délecter du risque maximal.