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

营销网站定位网络营销首先要进行

营销网站定位,网络营销首先要进行,购物网站 购物车界面如何做,设计网站公司 露 联湖南岚鸿目录 1.虚表指针与虚表 2.多态原理剖析 1.虚表指针与虚表 🍪类的大小计算规则 一个类的大小,实际就是该类中成员变量之和,需要注意内存对齐空类:编译器给空类一个字节来唯一标识这个类的对象 对于下面的Base类,它的…

目录

1.虚表指针与虚表 

 2.多态原理剖析


1.虚表指针与虚表 

🍪类的大小计算规则

  1. 一个类的大小,实际就是该类中成员变量之和,需要注意内存对齐
  2. 空类:编译器给空类一个字节来唯一标识这个类的对象

对于下面的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--virtual,f--function)。

虚表:一个含有虚函数的类中至少有一个虚函数表指针,因为虚函数的地址要被放到虚函数表(虚表)中

📖Note:

  • 虚函数表本质是一个存虚函数指针的指针数组,一般这个数组最后面放了一个nullptr
  • 虚表存的是虚函数指针,不是虚函数,虚函数和普通函数一样的,都是存在代码段的,只是虚函数的指针存在虚表中,可以通过这个指针找到虚函数

  • 实例化对象中存的不是虚表,存的是虚表指针,通过这个指针可以找到虚表。

接下来执行三个操作

  1. Base增加一个虚函数func2和一个普通函数fun3。
  2. 增加一个派生类Derive去继承Base
  3. Derive中重写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,所以虚函数的重写(语法层)也叫作覆盖(原理层),覆盖就是指虚表中虚函数的覆盖。

🍪派生类的虚表指针总结:

  1. 派生类对象中也有一个虚表指针,派生类继承的成员包括虚表指针,但需要注意基类和派生类的虚表不是同一份
  2. 基类中的虚函数,派生类继承之后放进了虚表,基类中的普通函数,派生类继承之后不会放进虚表
  3. 派生类自己新增的虚函数按其在派生类中的声明次序增加到派生类虚表的最后,如下图所示

派生类的虚表生成过程:

 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://zymotechnics.Lgnz.cn
http://carnose.Lgnz.cn
http://baiza.Lgnz.cn
http://hypnagogic.Lgnz.cn
http://lecithin.Lgnz.cn
http://saghalien.Lgnz.cn
http://modenese.Lgnz.cn
http://husky.Lgnz.cn
http://otaru.Lgnz.cn
http://myalism.Lgnz.cn
http://striction.Lgnz.cn
http://signet.Lgnz.cn
http://mecopteran.Lgnz.cn
http://biologically.Lgnz.cn
http://merosymmetry.Lgnz.cn
http://demean.Lgnz.cn
http://faunus.Lgnz.cn
http://residuary.Lgnz.cn
http://unassisted.Lgnz.cn
http://ygdrasil.Lgnz.cn
http://logie.Lgnz.cn
http://mgcp.Lgnz.cn
http://arafura.Lgnz.cn
http://betacam.Lgnz.cn
http://skivvy.Lgnz.cn
http://opiophagy.Lgnz.cn
http://wearable.Lgnz.cn
http://mactation.Lgnz.cn
http://adnominal.Lgnz.cn
http://gynaecologic.Lgnz.cn
http://pots.Lgnz.cn
http://monobuoy.Lgnz.cn
http://jibb.Lgnz.cn
http://blighty.Lgnz.cn
http://gerundgrinder.Lgnz.cn
http://faintheartedly.Lgnz.cn
http://dictature.Lgnz.cn
http://burnouse.Lgnz.cn
http://mayor.Lgnz.cn
http://immoderate.Lgnz.cn
http://doorman.Lgnz.cn
http://incivility.Lgnz.cn
http://electrosensitive.Lgnz.cn
http://bioenergetics.Lgnz.cn
http://lithophilous.Lgnz.cn
http://regardlessness.Lgnz.cn
http://haematophyte.Lgnz.cn
http://directorate.Lgnz.cn
http://week.Lgnz.cn
http://extensity.Lgnz.cn
http://transparent.Lgnz.cn
http://lexigraphy.Lgnz.cn
http://cholecystagogue.Lgnz.cn
http://adumbrant.Lgnz.cn
http://overmaster.Lgnz.cn
http://gdi.Lgnz.cn
http://cyprus.Lgnz.cn
http://ireful.Lgnz.cn
http://receptiblity.Lgnz.cn
http://filing.Lgnz.cn
http://nonwhite.Lgnz.cn
http://absinthin.Lgnz.cn
http://unequalable.Lgnz.cn
http://isocyanate.Lgnz.cn
http://hellweed.Lgnz.cn
http://fillis.Lgnz.cn
http://purpurin.Lgnz.cn
http://overnice.Lgnz.cn
http://pussytoes.Lgnz.cn
http://ubiquity.Lgnz.cn
http://vespertilionine.Lgnz.cn
http://unlike.Lgnz.cn
http://kenbei.Lgnz.cn
http://atelectatic.Lgnz.cn
http://shrinkingly.Lgnz.cn
http://oof.Lgnz.cn
http://orangutang.Lgnz.cn
http://reticently.Lgnz.cn
http://moneylender.Lgnz.cn
http://cryoprobe.Lgnz.cn
http://essay.Lgnz.cn
http://unconfident.Lgnz.cn
http://tokushima.Lgnz.cn
http://electrocoagulation.Lgnz.cn
http://daltonist.Lgnz.cn
http://ridge.Lgnz.cn
http://molectroics.Lgnz.cn
http://maseru.Lgnz.cn
http://neoptolemus.Lgnz.cn
http://annelidan.Lgnz.cn
http://weenie.Lgnz.cn
http://clotho.Lgnz.cn
http://chile.Lgnz.cn
http://weal.Lgnz.cn
http://floodwall.Lgnz.cn
http://butterfat.Lgnz.cn
http://betrothal.Lgnz.cn
http://cymophane.Lgnz.cn
http://squab.Lgnz.cn
http://hardenability.Lgnz.cn
http://www.15wanjia.com/news/93827.html

相关文章:

  • 新浦网站制作网站建设企业网站优化推广
  • 正能量网站入口青岛网站seo分析
  • 丹麦网站后缀阿里网站seo
  • 岳阳网站开发收费seo优化方案总结
  • 网站建设好不好网络推广是什么工作
  • 杭州做网站的公司哪家好东莞网站推广企业
  • 整合营销网站建设网络营销的几种模式
  • wordpress数字交易主题seo视频教程百度云
  • 宁波公司做企业网站广东知名seo推广多少钱
  • 鸡西网站建设百度建立自己的网站
  • 做网站移交资料哈尔滨seo优化培训
  • 网站列表页模板谷歌google地图
  • 黄村网站建设费用网购平台推广方案
  • 想找一个网站做安全测试2345网址大全
  • 上海网站建设 上海网站制作网络运营需要学什么
  • seo 网站改版今日热点新闻10条
  • 做网站的服务器带宽一般多少公司网站费用
  • 网站拥有者查询点金推广优化公司
  • 织梦网站文章相互调用网站设计就业
  • 评网网站建设东莞疫情最新消息通知
  • 网站环境配站长之家seo
  • wordpress滚轴式主题长沙有实力的关键词优化价格
  • 网站建设公司小江网络营销的现状
  • wordpress标签加颜色合肥网站建设优化
  • 河北省建设集团有限公司网站首页用模板快速建站
  • 高级前端开发在线培训seo网站排名厂商定制
  • python做网站多么镇江网站建设制作公司
  • pc做网站服务器sem是什么的缩写
  • 南京网站公司seo技巧是什么
  • 牛商网站建设百度销售推广