码迷,mamicode.com
首页 > 编程语言 > 详细

C++对象

时间:2019-11-28 21:08:35      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:模型   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的对象模型是这样的:

技术图片

 

 

 

C++对象

标签:模型   UNC   存在   支持   member   class   产生   nstat   assign   

原文地址:https://www.cnblogs.com/along4396/p/11953467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!