news 2026/5/8 20:34:31

cpp对象模型学习笔记1.1-2.8

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cpp对象模型学习笔记1.1-2.8

1.什么是cpp对象模型

cpp对象模型是指编译器实际上是怎么实现的c++的对象,比如构造函数、析构函数、虚函数、继承关系。

2.构造函数

在学cpp的时候一般会有这样的知识被告知,当我们没有主动写任何类的构造函数的时候,编译器会为我们合成一个默认的构造函数,这句话的问题是有时候构造函数不需要采取任何行为,编译器就不会为我们合成,哪怕我们认为是合成了。

体现就是如果去检查汇编文件是没有构造函数的。

编译器会为我们合成默认构造函数的情况:

1.类内的成员所属的类有缺省的构造函数

编译器会在我们没有构造函数,且被构造的情况下生成一个默认构造函数去调用成员的缺省构造函数

2.父类有缺省的构造函数

编译器会为我们生成缺省构造函数调用父类的构造函数

3.拥有任何虚函数

编译器会为我们在构造函数内初始化vptr和虚函数表,这是虚函数的实现机制

4.拥有虚基类

编译器会为我们在构造函数内初始化虚基类表

3.拷贝构造函数

编译器会为我们合成拷贝构造函数的情况,首先得是我们没有手动写拷贝构造函数,并且产生了拷贝调用的应用场景。

四种情况也是

1.成员有拷贝构造函数

2.父类有拷贝构造函数

3.虚函数

4.虚基类

4.编译器对函数的优化

当函数内部的局部变量作为返回值的时候,如果先声明tmp再返回,这时候可能有一个拷贝构造的过程,但是如果直接在返回的时候构造,编译器的优化开启的状态会直接在之前拷贝的位置构造,减少了一次构造函数的调用操作。

5.总结

阅读深度探索c++对象模型的时候还是比较枯燥的不过收获很多,比如vptr的部分。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 9:48:50

免费无广告!VeryCapture 截图录屏 + OCR 翻译 Windows 全能刚需神器

下载链接 https://pan.freedw.com/s/G8XMyC 日常办公、学习或娱乐,一款好用的截图录屏软件绝对是刚需!今天给大家安利一款 Windows 宝藏工具 ——VeryCapture,完全免费无广告,用过的人都直呼 “真香”,使用体验拉满&a…

作者头像 李华
网站建设 2026/5/7 20:40:37

RocketMQ Hook 实现

1. 前言 在分布式系统中,RocketMQ 不仅仅是一个消息传输管道,它还提供了强大的插件化扩展能力。RocketMQ Hook(钩子) 机制类似于 Spring 的 AOP(面向切面编程)或 Servlet Filter。它允许开发者在消息发送前…

作者头像 李华
网站建设 2026/5/7 20:10:10

YOLO26优化:多尺度提取能力 | 多尺度注意力网络(HSAN)通过分组卷积和联合通道-空间注意力机制,增强多尺度特征表达能力

💡💡💡问题点:在检测不同尺寸的图像时,传统方法常因无法有效融合多尺度信息而漏检小型或远距离目标 。 💡💡💡加强不同尺度特征提取能力:多尺度注意力网络(HSAN)通过分组卷积和联合通道-空间注意力机制,增强多尺度特征表达能力 《YOLO26魔术师专栏》将从以…

作者头像 李华
网站建设 2026/4/20 0:13:53

2026 年企业 HR 必备:新员工入职前信息采集与合同管理智能化方案

新员工入职前的信息采集与合同管理是企业 HR 工作的重要起点,直接影响员工入职体验与企业合规管理效率。传统模式下,人工收集信息、纸质签署合同不仅耗时耗力,还易出现信息遗漏、流程滞后等问题。随着数字化转型推进,智能化方案逐…

作者头像 李华
网站建设 2026/5/3 12:46:50

苹果手机文件传输到电脑指南:一文学会4个高效技巧

苹果手机文件传输到电脑,是苹果用户经验会面临的需求。无论您是想备份照片、分享东西,还是想在电脑上编辑文件,选择合适的传输方式能大大提高效率。本文将为你系统梳理5种常用方法,从无线传输到有线链接,总有一种能契合…

作者头像 李华