当前位置: 首页 > news >正文

c 手机网站开发工具百度景安空间网站

c 手机网站开发工具,百度景安空间网站,小米网站设计,网站建设88类的虚表 每个包含了虚函数的类都包含一个虚表。 当一个类(B)继承另一个类(A)时,类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说&…

类的虚表

每个包含了虚函数的类都包含一个虚表。 

当一个类(B)继承另一个类(A)时,类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。

来看以下的代码。类A包含虚函数vfunc1,vfunc2,由于类A包含虚函数,故类A拥有一个虚表。

class A {
public:virtual void vfunc1(){    cout << "A::vfunc1" << endl;}virtual void vfunc2(){    cout << "A::vfunc2" << endl;}void func1();void func2();
private:int m_data1, m_data2;
};

类A的虚表如图1所示。 

 虚表是一个指针数组,其元素是虚函数的指针,每个元素对应一个虚函数的函数指针。需要指出的是,普通的函数即非虚函数,其调用并不需要经过虚表,所以虚表的元素并不包括普通函数的函数指针。

虚函数指针的赋值发生在编译器的编译阶段,也就是说在代码的编译阶段,虚表就可以构造出来了。

虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。

虚表指针

为了指定对象的虚表,对象内部包含一个虚表的指针,来指向自己所使用的虚表。为了让每个包含虚表的类的对象都拥有一个虚表指针,编译器在类中添加了一个指针,*__vptr,用来指向虚表。这样,当类的对象在创建时便拥有了这个指针,且这个指针的值会自动被设置为指向类的虚表。

 上面指出,一个继承类的基类如果包含虚函数,那个这个继承类也有拥有自己的虚表,故这个继承类的对象也包含一个虚表指针,用来指向它的虚表。

虚函数表存储位置

首先虚函数表存储在只读数据段(.rodata)、虚函数存储在代码段(.text)、虚表指针的存储的位置与对象存储的位置相同,可能在栈、也可能在堆或数据段等。
扩展:


 

 

http://www.yayakq.cn/news/442571/

相关文章:

  • uc网站模板自己做网站要学什么软件
  • psd做网站切片themes for wordpress
  • 网站放到服务器昆山 网站设计
  • 重庆企业网站推广方案小红书笔记推广
  • 优化网站要怎么做宁波 做网站的
  • 北京建站管理系统价格WordPress网易云插卡
  • 信产部网站备案wordpress仪表盘默认
  • 阿里云主机 多个网站网页设计师证书报名官网
  • 青岛网站设计建立公司asp.net网站开发教程下载
  • 什么牛网站建设烟台景明网络
  • 建设银行官方网站个人网上自学平台
  • 网站怎么赚钱的庭院景观设计
  • 免费养殖网站模板哪些网站可以做视频直播
  • 广州工作室做网站wordpress html 单页
  • 网站建设实训意见建议工程建设国家标准网站
  • 检察机门户网站建设自查报告飓风seo刷排名软件
  • 中文网站排行榜购物网站后台设计
  • 电商网站建设需求南宁网站建设建站系统
  • 网站开发常见问题网站设计步骤图
  • 长春网站推广方式网站外包要花多少钱
  • 知名网站有哪些网络营销运营方案
  • 广告文案优秀网站深圳网站建设代理商
  • 网站集约化建设工作讲话广东省建设监理协会网站官网
  • 仿网站开发霸州网站制作
  • 怎么建设网站视频教程wordpress链接失效
  • 做淘宝店招的网站网站建设维护招聘
  • 网站有域名用注册商标吗旅游网站建设前期分析
  • asp网站qq登录网站设计服务流程
  • 自己做头像的网站非流光九号公司
  • 上海专业做网站公wordpress文件结构