本文主要介绍,在继承中继承类在内存中的实际分布情况。
下面我们举例说明:
/****************************************************
* brief : 继承中的对象模型
* author : shao
* date : 2020-04-02
* note : 探查继承后,对象在内存中的实际分配方式
*
****************************************************/
#include <iostream>
using namespace std;
class Base{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};
class Son : public Base{
public:
int m_D;
};
void test01(void)
{
cout << "sizeof(Son) = " << sizeof(Son) << "Bytes" << endl;
}
int main(void)
{
test01();
return 0;
}
结果如下:
可以看到,虽然在Son继承Base后,看不到父类中的private变量,
但是在内存中依然分配了该成员变量的内存空间。
其实private成员变量也会被继承,只是编译器把private的成员给隐藏了,
程序员看不到而已。
下面是程序员开发命令符看到的内存分配结果:
可以看到,父类的三个成员变量占用12Bytes,
子类的成员变量占用4Bytes。