继承作为C++三大特性之一,无疑是非常重要的,而深入内存,弄懂派生类对象模型又是重中之重。本文我们来看看单继承中的派生类的对象模型。
首先我们建立一个简单的继承体系:
class Base
{
public:
Base()
: b(1)
{
std::cout << "Base()" << std::endl;
}
int b;
};
class Derive :public Base
{
public:
Derive()
: d(3)
{
std::cout << "Derive()" << std::endl;
}
int d;
};
这里声明了两个类,Base类有数据成员b,在构造函数中初始化为1;Derive类有数据成员d,在构造函数中初始化为3。而Derive类继承自Base类,因此Derive类应该有两个数据——b与d。我们在vs中来看一看派生类Derive对象的内存空间的数据:
通过对派生类对象内存空间中的观察,我们能发现继承自基类的数据成员存储于低地址空间,而派生类新增的数据成员存储于高地址空间。
据此,可以画出简单单继承关系中派生类的对象模型:
分析完毕,望高手斧正。