news 2026/4/18 6:24:02

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/3/28 19:56:57

食品X光异物检测机:性能评估与核心技术解析

处于食品工业高度自动化的当下,生产线末尾的产品质量管控环节极其重要,其中,X光异物检测机已然成为确保食品安全、维护品牌名声的关键设备中的一个,它借助X射线穿过产品,按照内部物质密度差别生成图像,进而…

作者头像 李华
网站建设 2026/4/3 6:24:44

国产化系统中,SpringMVC如何支持百M大文件的快速下载?

大文件传输解决方案 作为福建农业集团的项目负责人,我理解您面临的是一个具有挑战性的大文件传输需求,涉及国家安全级别的高要求。基于您提供的详细需求,我将从技术架构、解决方案和源代码示例三个方面为您提供专业建议。 一、需求分析与技…

作者头像 李华
网站建设 2026/3/29 6:36:17

springboot企业人事工资管理系统-开题报告

目录 开题报告背景与意义系统核心功能模块技术选型与创新点预期成果与难点研究方法与计划 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 开题报告背景与意义 随着企业规模扩大和人力资源管理复杂度提升…

作者头像 李华