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

网站建设传单文案哈尔滨百度推广公司

网站建设传单文案,哈尔滨百度推广公司,wordpress推广链接地址,泉州最专业手机网站建设开发指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么? 1、无论指针类型怎么转,类对象内存没有发生任何变化,还是vfptr指向虚函数表,下面是成员变量,这在编译阶段就已经确定好了&#xff1b…

指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么?

1、无论指针类型怎么转,类对象内存没有发生任何变化,还是vfptr指向虚函数表,下面是成员变量,这在编译阶段就已经确定好了;
在这里插入图片描述

2、运行时,会根据vfptr找到vftable,然后确定类型为派生类(RTTI运行时类型识别),这是调用虚函数是查表来调用的,在编译的时候派生类的虚函数早就把基类的虚函数给覆盖了,调用的肯定是派生类的虚函数
3、整个调用过程如下
编译器进行编译成汇编代码时,先看到show函数,show函数是虚函数,虚函数编译时就不能直接call show了,而是通过bfptr找到虚函数标,大概过程如下
mov ecx dword ptr[p3] //找到vfptr
mov eax dword ptr[ecx] //把vfptr指向的地址,也就是vftable[0]的地址给寄存器eax,eax里存放的是派生类show函数的地址
call eax //调用派生类的show

以上三句汇编才是虚函数产生多态的核心

在这里插入图片描述

#include <iostream>
#include <memory>#include<iostream>
using namespace std;//基类
class Base
{
public:virtual void show(){cout << "base ::show" << endl;}
public:int ma;
};
class Derived:public Base
{
public:virtual void show(){cout << "Derived ::show" << endl;}
public:int mb;
};int main()
{Base* p1 = new Derived;p1->show();void* p2 = (void*)p1;Base* p3 = (Base*)p2;p3->show();return 0; ;
}

在这里插入图片描述

http://www.dinnco.com/news/8504.html

相关文章:

  • google网站管理员工具 下载域名查询系统
  • 韩国网站域名分类公司网站的作用
  • 做招聘网站的背景图片电池优化大师下载
  • 男做暧免费视频网站数据分析师培训机构
  • 做网站需要哪些技术知乎seo公司重庆
  • 租房网站发布信息的免费平台有哪些
  • 自己做网站怎么搜索电脑办公软件培训班
  • 百度站长工具数据提交知乎营销推广
  • 如何连接wordpress河北seo推广方案
  • 51网站空间相册在哪里国外网站怎么推广
  • 广西建设厅官网站首页站长工具大全
  • 手机网站设计的项目描述杭州seo服务公司
  • 宁晋网站开发百度关键词多少钱一个月
  • 天津手机网站建设百度查一下
  • 湖南网站建设开发台州网站建设优化
  • 企业网站设计合同关键词排名
  • 做网站建设的怎么拓展业务小程序推广方案
  • 福安建设厅网站seo产品推广
  • 深圳台历制作搜索引擎排名优化技术
  • 做瞹视频网站枸橼酸西地那非片
  • 沈阳网站建设推广服务aso优化的主要内容
  • 咨询网站模板seochinazcom
  • 网站怎么做外链接地址win10优化大师官网
  • 找装修seo基础教程视频
  • 百度做的网站靠谱吗百度官网推广平台电话
  • 深圳家装网站建设多少钱如何在互联网推广自己的产品
  • 个人电脑建网站广东最新消息
  • 网页设计与制作黑马程序员seo优化顾问服务阿亮
  • 网站改版专题页2022最新国内新闻50条简短
  • 具有品牌的做网站汕头seo排名收费