标签:模型 UNC 存在 支持 member class 产生 nstat assign
一、C++对象模型
在C++的对象模型中,nonstatic data members被放在每个class object之中,static data members仅存在一份实例,被单独放置在class ojbect之外,static 和 nonstatic function members 也仅存在一份实例,被放置在class object之外。对于virtual functions则以两个步骤来支持:
1.每个class 产生一堆指向virtual function的指针,放在一个表格之中,该表格称为virtual table(vtbl)
2.每一个class object被安插一个指针,指向相关的virtual table,该指针称为vptr。vptr的设定和重置是由class 的constructor,destructor,copy assignment自动完成的。每一个class所关联的type info object(用于支持runtime type identification)也是由virtual table指出,通常放在表格的第一个slot。
以以下的代码为例:
class Point
{
public:
Point();
virtual ~Point();
float x() const;
static int PointCount();
virtual ostream& Print(ostream& os)const;
private:
float x;
static int POINT_COUNT;
};
class Point的对象模型是这样的:

标签:模型 UNC 存在 支持 member class 产生 nstat assign
原文地址:https://www.cnblogs.com/along4396/p/11953467.html