首页 c++对象的放置问题

c++对象的放置问题

举报
开通vip

c++对象的放置问题 c++对象的放置问题 经历过从c 到 c++的人,一定想知道 c++编译器是如何安排类的成员的.这里我 大概的作一下介绍,并有一些代码供你进行测试,希望对大家有点作用吧. 其实这里的标题或许有点大了,简单的说,类的非static 成员是按照声明的顺序 存放在内存区的,而类的static 成员和一般的static 变量的存储格式一样.我不从 简单的东西入手了,直接从一个相对复杂的多重继承的例子入手.看下面的代码: class Point2d { public: int _x,_y; virtua...

c++对象的放置问题
c++对象的放置问题 经历过从c 到 c++的人,一定想知道 c++编译器是如何安排类的成员的.这里我 大概的作一下介绍,并有一些代码供你进行测试,希望对大家有点作用吧. 其实这里的标题或许有点大了,简单的说,类的非static 成员是按照声明的顺序 存放在内存区的,而类的static 成员和一般的static 变量的存储格式一样.我不从 简单的东西入手了,直接从一个相对复杂的多重继承的例子入手.看下面的代码: class Point2d { public: int _x,_y; virtual f(){}//保证 Point2d 有个虚拟指针 }; class Point3d:public Point2d { public: int _z; }; class Vertex { public: virtual void h(){}//保证 Vertex3d 的第二基础类有个vptr int next; }; class Vertex3d:public Point3d,public Vertex { public: int mumble; }; Point2d,Point3d,Vertex,Vertex3d的继承关系能看得出来吧.再看主函数 int main() { Vertex3d v3d; Vertex*pv; pv=&v3d; int*x=&v3d._x;//获取 v3d 的成员的地址 int*y=&v3d._y; int*z=&v3d._z; int*n=&v3d.next; int*mem=&v3d.mumble; cout<<"*v3d= "<<&v3d< 本文档为【c++对象的放置问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_117578
暂无简介~
格式:pdf
大小:92KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2012-09-28
浏览量:3