class A{
fct1(){};
};
class B:public A{
fct2(){};
};
// B b;
// A* a = &b; good! possible!!
class A{
fct1(){};
};
class B:protected A{
fct2(){};
};
//B b;
// A* a=&b; error!
pourquoi est-ce? Qu'est-ce que l'héritage protégé a à voir avec le pointeur?Pourquoi le pointeur de type base ne peut-il pas prendre la valeur d'adresse de l'objet de classe dérivé?
J'ai appris que l'héritage protégé change la zone publique en zone protégée, de sorte que seule la classe dérivée peut accéder à ses fonctions et variables membres. :(
S'il vous plaît expliquer le principe et la raison.
Ensuite, je ne peux pas construire le polymorphisme avec l'héritage protégé? –
et subobject signifie quelque chose comme fct1 en classe? J'ai appris le C++ en coréen: P –
"Polymorphisme" est un mot dangereusement vague. Habituellement, le "polymorphisme dynamique" (ou "polymorphisme de la fonction virtuelle") fait référence à l'héritage ** public **. Dans cette interprétation du polymorphisme, vous voulez traiter un 'B' * comme si c'était un' A', donc le sous-objet de base doit être public. –