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

网站开发需要兼容到ie几关于网站图片

网站开发需要兼容到ie几,关于网站图片,免费音乐网站建设,wordpress文章页随机文章一、虚函数表(vptr) 之前研究到&#xff0c;vptr存储在对象实例的最前面位置。 这样意味着我们可以&#xff1a; 对象实例 -> vptr指针 -> 虚函数表位置 -> 各类虚函数 1.1、示例代码 #include "pch.h" #include <iostream> using namespace std; c…

一、虚函数表(vptr)

之前研究到,vptr存储在对象实例的最前面位置
这样意味着我们可以:

  • 对象实例 -> vptr指针 -> 虚函数表位置 -> 各类虚函数

1.1、示例代码

#include "pch.h"
#include <iostream>
using namespace std;
class Base {
public:virtual void f() { cout << "Base::f" << endl; }virtual void g() { cout << "Base::g" << endl; }virtual void h() { cout << "Base::h" << endl; }
};
int main()
{typedef void(*Fun)(void);Base b;Fun pFun = NULL;Base * p = &b;cout << "该对象的地址:" << p << endl;cout << "虚函数表的指针也是从这个地址"<< (int*)(&b) <<"开始存的" << endl << endl;cout << "虚函数表的指针指向的地址10进制:" << *(int*)(&b) << "即虚函数表的指针存的内容"<<endl;cout << "即虚函数表的地址:" << (int*)*(int*)(&b) << endl << endl;pFun = (Fun)*(int*)*(int*)(&b);//第一个虚函数的指针cout << "第一个虚函数的地址:" << pFun << endl;pFun();Fun gFun = NULL;gFun = (Fun)*((int*)*(int*)(&b) + 1);//第二个虚函数的指针Fun hFun = NULL;hFun = (Fun)*((int*)*(int*)(&b) + 2);//第三个虚函数的指针
}

如下所示:

  • b为BaseTest类型对象,&b返回BaseTest类型对象指针
  • (int*)(&b) :把BaseTest类型指针改为int类型,指针指向地址没变,但指向对象的类型变了。
  • *(int*)(&b) : 对int*类型指针解引用,从b对象地址开始,取出sizeof(int)个字节(因为此时指针认为自己指向一个int对象)

前面有做过实验,*(&b)的话取回的还是BaseTest类型,若是改为int*,则可以正常打印b对象地址。

  • (int *)*(int *)(&b) :相当于 *(int *)(&b) 这个int数值前加上(int*) ,即返回一个int指针,此指针代表 b对象首地址的vptr里面的内容,即指向虚函数表。
  • *(int *)*(int *)(&b) :同上面一样,对int*解引用,返回int数值。
  • (Func)*(int *)*(int *)(&b) : Func是函数指针,后接int数值,则代表此函数指针指向这个int数值。
    因此上面6步结束后,得到虚函数表中的虚函数地址,则可以直接调用。
  • (Func)*((int *)*(int *)(&b) + 1): 这里就是数组的指针的正常操作,现在这个指针指向了数组的第二个元素(即第二个虚函数指针),最后就是解引用,然后转换为Fun函数指针。

【注】:这里存在一个问题,VS可得到目标虚函数,但QT得到的虚函数地址只有第一个函数可用?- 参考:https://www.cnblogs.com/cmt/p/14580194.html?

二、虚函数表结束标志

虚函数表有开始就有结束,其的结束标志是 ‘\0’

char* end = NULL;
end = (char*)((int*)*(int*)(&b) + 3);

加上如上代码,这里指向了虚函数表即指针数组的第四个元素,但实际上数组里只有三个指针,所以这里便刚好指向了结束标志。再通过(char*)转换指针类型,代表指向的是一个字节。

【注】:char型存储的含义:

char end1 = '\0';	//字符串的结束符
char end2 = 0;		//字符串的结束符
char zero1 = '0';	//这才是真正的字符0
char zero2 = 48;

可以通过数组应用,来进行循环索引。

三、派生类虚函数表 结构顺序

3.1、单继承(无虚函数覆盖)

例子:基类有三个虚函数,派生类有三个虚函数,但派生类没有另外重写基类虚函数。

虚函数表顺序: 基类虚函数1.2.3 -> 派生类虚函数1.2.3 -> ‘\0’
在这里插入图片描述

3.2、单继承(有虚函数覆盖)

例子:基类有三个虚函数,派生类有三个虚函数,派生类重写基类虚函数f。

虚函数表顺序: 派生类1 -> 基类虚函数.2.3 -> 派生类虚函数2.3 -> ‘\0’
在这里插入图片描述

3.3、多继承(无虚函数覆盖)

例子:有三个基类,一个派生类,且派生类一个虚函数也没有去重写。

虚函数表顺序:

  • 对于继承到的每个基类,都有一个对应的虚函数表。
  • 对于继承到的每个基类,都有一个对应的虚函数表
    派生类的虚函数的指针,被放进了第一个基类对应的虚函数表里。(按照声 明顺序来判断的)
    在这里插入图片描述在这里插入图片描述

3.4、多继承(有虚函数覆盖)

例子:有三个基类,一个派生类,且派生类重写了三个基类的同一个虚函数。

虚函数表顺序:

  • 三个基类的虚函数表的第一项,都被替换为Derive::f的指针
  • 这样任意基类指针指向派生类对象,都可以调用到Derive::f
    在这里插入图片描述

文章转载自:

http://MxDYFNUi.dgmjm.cn
http://AkO7DxG4.dgmjm.cn
http://pB5oyB9T.dgmjm.cn
http://IZ2t3xJZ.dgmjm.cn
http://uWJG6sF9.dgmjm.cn
http://qjFO19E2.dgmjm.cn
http://XkCKbdzZ.dgmjm.cn
http://vCITBpwu.dgmjm.cn
http://eZY6QM6N.dgmjm.cn
http://ok3iAHqs.dgmjm.cn
http://fqdP84Gj.dgmjm.cn
http://EuvLfybX.dgmjm.cn
http://C8dLn7ft.dgmjm.cn
http://YrFdncZq.dgmjm.cn
http://6PTwUqiH.dgmjm.cn
http://sIjlqeqj.dgmjm.cn
http://DJITALpr.dgmjm.cn
http://QHjnhomc.dgmjm.cn
http://EVHMNgXh.dgmjm.cn
http://dEQSnUyZ.dgmjm.cn
http://RLgaGHou.dgmjm.cn
http://61CpuXZu.dgmjm.cn
http://4VbFjXOW.dgmjm.cn
http://eSTHGRW4.dgmjm.cn
http://dzvzcG3i.dgmjm.cn
http://eDDdxaNm.dgmjm.cn
http://h5HUXYJX.dgmjm.cn
http://Lg3XCfzC.dgmjm.cn
http://v8q3qP9G.dgmjm.cn
http://bVm76hPC.dgmjm.cn
http://www.dtcms.com/wzjs/701012.html

相关文章:

  • 绚丽网站月夜直播免费看
  • 漳州正规网站建设公司网站公司建站
  • 网站怎样做权重天猫与京东的网站建设管理
  • 网站制作新报价电脑网站设计公司
  • 域名 网站郑州网络优化实力乐云seo
  • 比较好的免费网站红色logo做网站
  • 用axuer 做网站产品原型wps免费模板网站
  • 重庆哪里可以做公司网站中国住房和建设部厅查询网站
  • 湖州长兴做网站小型教育网站开发与设计
  • h5页面怎么生成链接网络seo公司
  • 网站制作费用要多少钱苏州住房与城乡建设部网站
  • 查域名网站wordpress的中文插件
  • 谷歌网站提交入口wordpress编辑器知乎
  • 揭阳网站建设解决方案天津南开做网站公司
  • 做宠物商品的网站企业网站推广建议
  • 邢台有什么网站做网站大概需要多少费用
  • .net如何建设网站个人网站建设收费标准
  • 好看的响应式网站c 登录 wordpress
  • 深圳网站开发哪个好apmserv安装wordpress
  • 整套网站建设网站建设陆金手指下拉贰拾
  • 设计素材的网站大学国际化网站建设
  • 个人网站如何优化关键词购物网站代码
  • 广西住房和城乡建设网站视频专栏替换wordpress管理路径
  • 手机网站推荐大全建筑工程招标网站
  • 建设一个网站需要做哪些事情php商城网站的要求与数据
  • 门户网站需要多少空间河北省建设注册中心网站首页
  • 如今的网站建设潜江做网站的
  • 南宁网站建公司电话深圳市房地产信息平台官网app
  • 网站怎么建设dw公众号发布的文章是wordpress
  • 网站开发设计实训总结seo研究中心qq群