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

如何将wordpress上传到站点水煮鱼wordpress

如何将wordpress上传到站点,水煮鱼wordpress,怎么做链接网站,装修公司需要多少钱C对象模型是C语言中关于对象如何在内存中布局和如何工作的底层机制。理解C对象模型对于编写高效、正确的C代码非常重要。基本概念对象内存布局:C对象在内存中的组织方式虚函数机制:实现运行时多态的基础继承模型:单继承、多继承和虚继承的实现…

C++对象模型是C++语言中关于对象如何在内存中布局和如何工作的底层机制。理解C++对象模型对于编写高效、正确的C++代码非常重要。

基本概念

  1. 对象内存布局:C++对象在内存中的组织方式

  2. 虚函数机制:实现运行时多态的基础

  3. 继承模型:单继承、多继承和虚继承的实现

  4. 成员访问:成员变量和成员函数的访问机制

不含有有虚函数的对象模型

对于不包含虚函数的简单类:

内存布局:

  • 成员变量按声明顺序排列

  • 成员函数不占用对象空间(存储在代码区)

 空类的大小:

  • 如果一个类没有任何数据成员(包括静态成员),它的大小通常是 1字节(具体取决于编译器和内存对齐规则)。

带有虚函数的对象模型

当类包含虚函数时,编译器会添加一个虚函数表指针(vptr):

内存布局:

  1. 虚表指针(vptr)指向虚函数表(vtable)

  2. 然后是成员变量

  3. 虚函数表中存储着虚函数地址

 

继承模型

单继承

 1、对一般继承而言,若子类重写(overwrite)了父类的虚函数,则子类虚函数将覆盖虚表中对应的父类虚函数(注意子类与父类拥有各自的一个虚函数表);

2、若子类并无overwrite父类虚函数,而是声明了自己新的虚函数,则该虚函数地址将扩充到虚函数表最后。

3、而对于虚继承,若子类overwrite父类虚函数,同样地将覆盖父类子物体中的虚函数表对应位置,而若子类声明了自己新的虚函数,则编译器将为子类增加一个新的虚表指针vptr,这与一般继承不同。

多继承 

1、一般多继承 (非菱形继承)

        如果继承于多个基类,且这个多个基类中有虚函数,那么 这个类 会有多个虚函数表。

这个类的对象会有多个虚函数表指针。

         子类的虚函数被放在声明的第一个基类的虚函数表中。

        overwrite时,所有基类的同名虚函数都被子类的同名虚函数覆盖。这样做就是为了解决不同的基类类型的指针指向同一个子类实例,而能够调用到实际的函数。

        内存布局中,父类按照其声明顺序排列。

2、菱形继承
class A { int data; };
class B : public A { int b_data; };
class C :public A { int c_data; };
class D :public B, public c { int d_data; };

 

 问题:D的对象会包含两份 A 的成员。通过D 访问A 的成员 data 会编译错误,需要通过 B::data 或 C::data 明确路径。

内存布局

 

         相较于一般多继承,公共继承类在两个虚表中都有。

3.虚继承
class A { int data; };
class B : virtual public A { int b_data; };
class C : virtual  public A { int c_data; };
class D : public B, public c { int d_data; };

 最终派生类负责构造虚基类
注意:在虚继承的情况下,虚基类的构造由最底层的派生类直接负责,而不是由中间的基类来
构造过程:
1、先造虚基类A
由 D的构造函数直接调用 A的构造函数(B和C的造函数不再调用 A)
2、按照声明顺序构造:先 B,后 C
3、D的自身构造

         解决菱形继承的问题。

this指针调整

在多继承中,当派生类指针转换为基类指针时,可能需要调整this指针的值:

Derived* d = new Derived;
Base2* b2 = d;  // 可能需要调整指针值

对象构造与析构过程

  1. 分配内存

  2. 构造基类子对象

  3. 构造成员对象

  4. 执行构造函数体

  5. 析构顺序相反

运行时类型识别(RTTI)

通过type_info对象实现,通常与虚函数表存储在一起。

性能考虑

  1. 虚函数调用比普通函数调用多一次间接寻址

  2. 多重继承可能增加空间开销

  3. 虚继承会增加访问虚基类成员的开销

理解C++对象模型有助于编写更高效的代码,并更好地理解C++的底层机制。

http://www.dtcms.com/a/464009.html

相关文章:

  • 专业企业网站开发公司vps怎么做网站
  • 上饶建网站公司宁国网站建设|网站建设报价 - 新支点网站建设
  • 丹阳网站建设如何北京专业网站设计推荐
  • 建站工具推荐著名建筑网站
  • 突出什么 加强网站建设如何查看网站模板
  • 怎么做私人彩票网站怎样建设自己网站的后台
  • 公司付网站会员费科目怎么做自己怎么做网站
  • 建一个网站的费用零售网站建设方案
  • 怎么给网站上传附件腾讯官网首页登录入口
  • 做织梦网站时图片路径显示错误xxx美食网站建设规划书
  • 网站建设进度表 免费下载加盟商
  • 公司网站维护费 入什么科目企业公司网站建设ppt
  • 在线代理浏览器网站网站做线
  • 营销型品牌网站建设wordpress网站访问很慢
  • 天元建设集团有限公司第八建筑工程公司站长之家seo查找
  • 成都市城乡建设局网站微信公众号网页设计
  • 天津营销网站建设公司哪家好wordpress 新闻页面
  • 梅州建站费用多少免费学课程的软件
  • 唐山建站方案六安网站建设公司
  • 网站设计扁平化自己做网站排名好吗
  • 深圳住房和建设局网站网上申请linux建设视频网站
  • 网页版微信二维码登录发不了软文的网站怎么做关键词优化
  • 网站建设费计入无形资产怎么建网站手机版
  • 山东平台网站建设企业织梦模板首页修改教程
  • 宁波网站建设公司制作网站比利时网站后缀
  • 网站建设 麻烦吗现在还有做静态网站的
  • 企业网站建设合同百度文库什么是网站建设流程
  • 网站更名策划方案网络服务是干什么的
  • 什么是云速建站服务网站推广对企业的优势
  • 智慧交通项目:Python+YOLOv8 实时交通标志系统 深度学习实战(TT100K+PySide6 源码+文档)✅