C++部分知识点对应汇编代码

1.类初始化

通过类对象调用函数时,this指针会作为第一个参数

class MySharePtr {public:MySharePtr(int val) : a(val) {// a = val;				// 不使用初始化列表的方式}int a = 10;
};// 使用初始化列表的方式, 直接使用传入的参数进行构造
MySharePtr::MySharePtr(int) [base object constructor]:push    rbpmov     rbp, rspmov     QWORD PTR [rbp-8], rdimov     DWORD PTR [rbp-12], esimov     rax, QWORD PTR [rbp-8]mov     edx, DWORD PTR [rbp-12]mov     DWORD PTR [rax], edxnoppop     rbpret// 不使用初始化列表的方式, 在有默认值的情况下,明显是先按照默认值赋值后,再使用传入的参数进行构造
MySharePtr::MySharePtr(int) [base object constructor]:push    rbpmov     rbp, rspmov     QWORD PTR [rbp-8], rdimov     DWORD PTR [rbp-12], esimov     rax, QWORD PTR [rbp-8]mov     DWORD PTR [rax], 10mov     rax, QWORD PTR [rbp-8]mov     edx, DWORD PTR [rbp-12]mov     DWORD PTR [rax], edxnoppop     rbpret

因此对于常量成员或引用类型成员,必须在初始化列表中进行初始化,因为它们无法在构造函数体内赋值。

动态内存调用,因为事先知道类的大小,因此首先将该类大小作为第一个参数,调用new函数申请空间,再调用相应构造函数。

2.多重继承下的虚函数

  1. 之前,看其他博客上,有很多人说多重继承下虚函数表指针是依次放在类存储空间头部的。
    但,今天在看gcc13.2编译后的汇编代码时,发现虚函数表指针在存储的布局如下所示
vptr base class1
base class1 datamember
vptr base class2
base class2 datamembervtable for Soccerr:.quad   0.quad   typeinfo for Soccerr.quad   Soccerr::printId().quad   Soccerr::printId3().quad   Soccerr::printId4().quad   -16.quad   typeinfo for Soccerr.quad   PlayerSP::printIdSP()

这种方式在类初始化时比较简单,因为已经知道基类大小,只需要初始化基类1,偏移基类1大小,初始化基类2即可。
2. 上述的.quad -16表示的是,将Soccerr类转换为PlayerSP基类的偏移量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT 使用mysql

版本:ubuntu:20.04.1 mysql: 8.0.35 QT :5.12.8 1.安装mysql sudo apt install mysql-server 下载完后查看mysql状态 sudo service mysql status 如下图active(running)则下载成功,运行中…

ExcelBDD PHP Guideline

在PHP里面支持利用Excel的BDD,也支持利用Excel进行参数化测试 ExcelBDD Use Excel file as BDD feature file, get example data from Excel files, support automation tests. Features The main features provided by this library are: Read test data acco…

思伟老友记 | 厦门路桥翔通海砼建材有限公司与思伟软件携手走过23年

23年 感恩相伴 携手成长 2001年-2023年,厦门路桥翔通海砼建材有限公司已携手上海思伟软件有限公司走过23年。从最初的半手动生产模式到如今的自动生产一体化系统,海砼公司通过思伟软件生产混凝土累计超过1000万m,思伟软件则借助海砼公司的实…

二百零六、Flume——Flume1.9.0单机版部署脚本(附截图)

一、目的 在实际项目部署时,要实现易部署易维护,需要把安装步骤变成安装脚本实现快速部署 二、部署脚本在Linux中文件位置 文件夹中只有脚本文件flume-install.sh和tar包apache-flume-1.9.0-bin.tar.gz 三、Flume安装脚本 #!/bin/bash #获取服务器名…

竞赛 题目:基于大数据的用户画像分析系统 数据分析 开题

文章目录 1 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…

安防视频监控平台EasyCVR服务器部署后出现报错,导致无法级联到域名服务器,该如何解决?

视频监控平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,安防监控平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控…

C#WPF控制模板实例

一、控制模板 ControlTemplate(控件模板)不仅是用于来定义控件的外观、样式, 还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 控件模板定义控件的视觉外观,所有的 UI 元素都具有某种外观和行为,例如,Button 具有外观和行为。单击事件或…

OpenHarmony Meetup北京站招募令

OpenHarmony Meetup城市巡回北京站火热来袭!!日期:2023年11月25日14:00地点:中国科学院软件园区五号楼B402与OpenHarmony技术大咖近距离互动,分享技术见解,结交志同道合的朋友!活动主题聚焦Open…

LENOVO联想ThinkBook 16p G4 IRH(21J8)笔记本电脑原装出厂Windows11系统镜像

链接:https://pan.baidu.com/s/1q1vhzTA_VE4LnLvA-wVx7A?pwdvprc 提取码:vprc lenovo联想ThinkBook16P G4原厂Win11系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式&…

页面想去掉滚动条

// 有时候我们设置了overflow:auto,但是为了美观,又想去掉滚动条 .stopCar::-webkit-scrollbar {display: none; } // .stopCar是你设置overflow:auto盒子的class名,

【ISP图像处理】Demosaic去马赛克概念介绍以及相关方法整理

1. 基本定义 使用彩色滤光器阵列(CFA)的数码相机需要一个去马赛克程序来形成完整的RGB图像。一般的相机传感器都是采用彩色滤光片阵列(CFA)放置在光感测单元上,在每个像素处仅捕获三种原色成分中的一种。 去马赛克方法主要关注于复原非常规区域,比如边缘…

力扣labuladong一刷day13天双指针8道链表题

力扣labuladong一刷day13天双指针7道链表题 一、21. 合并两个有序链表 题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/ 思路:合并只需要新new一个虚拟头结点,然后遍历比较两个链表把较小的那一个顺序接在虚拟头结点后面。…

使用ChatGPT进行数据分析案例——贷款数据分析

目录 数据数据 每一行是一个记录,代表着一笔贷款,每一列是一个特征,一共1万多条数据,最后一列非常重要save_loans是否成功收回

三层交换机实现不同VLAN间通讯

默认时,同一个VLAN中的主机才能彼此通信,那么交换机上的VLAN用户之间如何通信? 要实现VLAN之间用户的通信,就必须借助路由器或三层交换机来完成。 下面以三层交换机为例子说明: 注意: 1.交换机与三层交换…

“可信区块链运行监测服务平台TBM发展研讨会”将于11月23日在北京召开

为推动区块链治理与创新,积极推进信任科技生态体系建设,中国信息通信研究院、中国移动设计院联合区块链服务网络(BSN)发展联盟共同发起建立了可信区块链运行监测服务平台(TBM)。 TBM平台通过对区块链系统的…

个人博客添加访问人数以及访问时间-githubpage

layout: post # 使用的布局(不需要改) title: 个人博客添加访问人数以及访问时间 # 标题 subtitle: 个人博客优化 #副标题 date: 2023-11-18 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 catalog: tr…

深度学习(小土堆)

self代表当前类的实例,并用于访问实例的属性和方法,主要方便后面访问属性或者方法。 启动事件文件夹 进行上一步需要在pycharm中设置当打开Terminal终端时,自动进入虚拟环境 防止与别人冲突可以修改端口号 将图像的数据类型转为numpy trans…

自用函数(持续更新)

防止win32com结束后有excel进程残留 import win32com.client import win32process,win32api,win32con excel win32com.client.DispatchEx(Excel.Application) def close_excel_by_force(excel): # 关闭进程# Get the windows process idshwnd excel.Hwnd#hwnd win32gui.Fi…

对不听话的孩子怎么办?牢记下面的方法!

对不听话的孩子怎么办?育儿是一项充满挑战的工作,而面对不听话的孩子更是让许多家长头疼的问题。在这篇文章中,我们将分享六个方法,帮助您有效地应对不听话的孩子,建立更加和谐的家庭氛围。 对不听话的孩子怎么办?下面具体来说…

机器学习与图像识别(二)—— OpenCV环境折腾。。

文章目录 进入正题之前版本说明Python环境搭建安装aruco算法 C 环境搭建安装 VSopencv验证 Aruco算法,opencv4.8.0 进入正题之前 OpenCV是一个优秀的开源视觉处理软件框架,也是计算机视觉学习道路上必须掌握的一套工具,奈何其版本兼容性上实…