#include iostreamusing namespace std;class Personpublic int m_age;;class Father virtual public Person 铏氱户鎵public Father cout Father endl; ~Father cout ~Father endl; ;class Mother virtual pu
输出结果: Father Mother Son sizeof(Person) = 4 (int类型的m_age占用4个字节) sizeof(Father) = 8 (虚继承Person,Father类中有一个指向Person类的指针,占用8个字节) sizeof(Son) = 16 (Son类中有两个Person类的指针,每个占用8个字节,加上m_age占用的4个字节,共占用16个字节)
解释:
- 首先创建一个Son对象jack。当创建Son对象时,首先会调用Mother类的构造函数,然后调用Father类的构造函数,最后调用Son类的构造函数。所以先输出Father,然后输出Mother,最后输出Son。
- 输出sizeof(Person)的结果为4,表示Person类对象占用4个字节。这是因为Person类中只有一个int类型的成员变量m_age,占用4个字节。
- 输出sizeof(Father)的结果为8,表示Father类对象占用8个字节。这是因为Father类虚继承Person类,所以Father类中有一个指向Person类的指针,占用8个字节。
- 输出sizeof(jack)的结果为16,表示Son类对象jack占用16个字节。这是因为Son类继承了Mother类和Father类,而Mother类和Father类都虚继承了Person类,所以Son类中有两个Person类的指针,每个占用8个字节,加上m_age占用的4个字节,共占用16个字节。
- 最后给jack对象的m_age赋值为666,表示jack对象的m_age为666
原文地址: https://www.cveoy.top/t/topic/iL7x 著作权归作者所有。请勿转载和采集!