Hé, je suis en train de comprendre comment la taille du travail de classe quand je suis en utilisant l'héritage, donc j'écrit ce code:Quelle est la taille de la classe lors de l'utilisation de l'héritage?
class AA
{
public :
int a;
virtual int getSize() {return sizeof(*this);}
};
class BB : public AA
{
public :
int b;
virtual int getSize2() {return sizeof(*this);}
};
int _tmain(int argc, _TCHAR* argv[])
{
AA aa;
BB bb;
std::cout << "Class AA : " << aa.getSize() << std::endl;
std::cout << "Class BB : " << bb.getSize() << std::endl;
std::cout << "Class BB : " << bb.getSize2() << std::endl;
}
La sortie de ce code est:
Class AA : 8
Class BB : 8
Class BB : 12
Ma question est: pourquoi la deuxième sortie renvoie la taille de AA au lieu de retourner la taille de BB? bb c'est le type BB, donc je m'attendais à 12 au lieu de 8?
"pourquoi le résultat bla" est presque toujours une mauvaise question; une meilleure question serait: «Mon intention était de blâmer, selon ma compréhension, blah bla bla, et puis bla suit, mais ça ne marche pas dans la pratique, comment est-ce que mon raisonnement sur bla n'est pas correct?" – curiousguy