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

零基础学做网站教程自己创建个人免费网站

零基础学做网站教程,自己创建个人免费网站,六年级上册数学优化设计答案,怎么做国外网上生意目录 1.虚表指针与虚表 2.多态原理剖析 1.虚表指针与虚表 #x1f36a;类的大小计算规则 一个类的大小#xff0c;实际就是该类中成员变量之和#xff0c;需要注意内存对齐空类#xff1a;编译器给空类一个字节来唯一标识这个类的对象 对于下面的Base类#xff0c;它的…目录 1.虚表指针与虚表  2.多态原理剖析 1.虚表指针与虚表  类的大小计算规则 一个类的大小实际就是该类中成员变量之和需要注意内存对齐空类编译器给空类一个字节来唯一标识这个类的对象 对于下面的Base类它的大小应该是类中成员变量之和一个int成员一个char成员根据结构体内存对齐规则sizeof(Base) 8byte class Base { public:virtual void func1(){cout func1() endl;} private:int _b 1;char _ch; }; 成员函数为虚函数  成员函数是普通函数  但是代码的运行结果为sizeof(Base) 12byte与上面的分析结果不一致 Base类中的成员函数使用virtual修饰可以推断包含虚函数的类大小计算规则和包含普通函数的类大小计算规则可能存在差异 我们创建一个Base对象进行进一步分析 从监视窗口可以发现实例化的Base对象成员构成除了两个成员变量外还有一个数组指针而数组成员又是指针类型所以准确来说_vfptr是一个指针数组指针 虚表指针和虚表 虚表指针对象中的这个指针叫做虚函数表指针(v--virtualf--function)。 虚表一个含有虚函数的类中至少有一个虚函数表指针因为虚函数的地址要被放到虚函数表(虚表)中 Note: 虚函数表本质是一个存虚函数指针的指针数组一般这个数组最后面放了一个nullptr 虚表存的是虚函数指针不是虚函数虚函数和普通函数一样的都是存在代码段的只是虚函数的指针存在虚表中可以通过这个指针找到虚函数 实例化对象中存的不是虚表存的是虚表指针通过这个指针可以找到虚表。 接下来执行三个操作 Base增加一个虚函数func2和一个普通函数fun3。增加一个派生类Derive去继承BaseDerive中重写func1  class Base { public:virtual void func1(){cout func1() endl;}virtual void func2(){cout func2() endl;}// 普通函数void func3(){cout func3() endl;} private:int _b 1;char _ch; };class Derive : public Base { public:virtual void func1(){cout Derive::func1() endl;} private:int _d 2; }; 从监视窗口可以发现 1️⃣基类的虚表指针值_vfptr  !  派生类的虚表指针值_vfptr 2️⃣基类的普通函数func3不会存入虚表之中继承之后也不会存入派生类的虚表 3️⃣派生类中对func1完成了重写d的虚表中存的是重写的Derive::func1所以虚函数的重写语法层也叫作覆盖原理层覆盖就是指虚表中虚函数的覆盖。 派生类的虚表指针总结 派生类对象中也有一个虚表指针派生类继承的成员包括虚表指针但需要注意基类和派生类的虚表不是同一份基类中的虚函数派生类继承之后放进了虚表基类中的普通函数派生类继承之后不会放进虚表 派生类自己新增的虚函数按其在派生类中的声明次序增加到派生类虚表的最后如下图所示 派生类的虚表生成过程 2.多态原理剖析 基于上面创建的基类Base和派生类Derive执行以下代码观察执行结果  分析 func3是基类Base中的定义的普通函数func1是基类Base中定义的虚函数且派生类完成了对func1的重写构成多态 普通函数的调用只与调用函数的对象的类型有关 前两次对func3的调用都是Base*类型的指针进行调用 多态调用与函数调用者指向的整个对象有关 第一次对func1的调用ptr指向的是一个Base对象对虚函数func1的调用需要到_vfptr指向的虚表中查找func1函数的地址进行调用最终调用的是Base类中的函数func1第二次对func1的调用ptr指向的是Derive对象中Base的切片对虚函数func1的调用仍然需要到_vfptr指向的虚表中查找func1函数的地址进行调用但是这一次_vfptr指向的虚表中func1函数的地址已经更改成了Derive类中重写的func1函数地址所以最终调用的是Derive中重写的func1函数
http://www.w-s-a.com/news/261363/

相关文章:

  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k
  • 自己的网站怎么接广告网站搭建收费
  • 宁波大型网站制作建立一个网站 优帮云
  • 大连零基础网站建设教学电话有哪些比较好的做ppt好的网站
  • 哪个网站做logo设计我的建筑网
  • php电子商务网站开发沂源手机网站建设公司
  • html和php做网站哪个好3gcms企业手机网站整站源码asp
  • 网站建设网页设计案例云南建设厅网站删除
  • 杏坛网站制作太原做网站要多少钱呢
  • 做新闻类网站还有市场吗东莞黄页网广告
  • 地方网站做外卖专业做互联网招聘的网站有哪些
  • 网站推广公司兴田德润紧急网页升级紧急通知
  • 厦门做网站哪家强企业网站网页设计的步骤
  • 普拓网站建设济南行业网站建设
  • 燕郊 网站开发网站里的地图定位怎么做
  • 门户网站建设招标互联网创业项目概述
  • 用什么做网站比较好市场调研公司是做什么的
  • 电商网站充值消费系统绍兴网站优化
  • 深圳网站建设公司联虚拟币交易网站开发
  • 专业网站设计建设公司抖音代运营公司排名前十强
  • 做网站架构肃北蒙古族自治县建设局网站
  • 推广网站怎么建经济研究院网站建设方案
  • 网站建设商家淘宝客自建网站做还是用微信qq做
  • django做网站效率高吗涉县移动网站建设报价
  • 做外贸网站注册什么邮箱能够做渗透的网站
  • 购物网站 怎么做织梦网站会员功能
  • 北京市网站开发公司郑州联通网站备案
  • 温岭专业营销型网站建设地址wordpress小程序怎么不用认证审核
  • 网站建设主体设计要求微信公众号缴费