news 2026/8/18 19:53:52

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/8/6 20:29:20

阿里云携手模思智能构建一站式多模态数据处理平台

模思智能简介 上海模思智能科技有限公司(MOSI Intelligence)成立于2024年11月,是国内深度情境智能领航者,依托深厚的学术积淀与卓越的工程落地能力,致力于构建下一代全感官人机交互体系。公司由复旦大学知名教授邱锡鹏…

作者头像 李华
网站建设 2026/8/14 6:23:36

从单点工具到智能流水线:企业级多智能体AI开发工作流架构实战

最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…

作者头像 李华
网站建设 2026/8/17 15:52:41

springboot停车场管理系统-开题报告

目录开题报告背景系统目标技术选型功能模块设计创新点预期成果进度计划项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作开题报告背景 随着城市化进程加快,车辆数量激增,传统停车场管…

作者头像 李华
网站建设 2026/8/6 10:01:17

DeepSeek解读用TypeScript的类型求解数独的代码

在网上看到一个用TypeScript的类型求解数独的代码。 但是我按照TypeScript的编译执行过程,没有任何输出。而执行app.ts编译后的js文件是有输出的。 export PATH$PATH:/mnt/c/d/node-v24.4.1-linux-x64/binnpm config set registry https://registry.npmmirror.com …

作者头像 李华
网站建设 2026/8/8 17:26:40

生态林业旅游体验与森林保护攻略

生态林业旅游不是简单的进山看树,它是以森林生态系统为依托,在严格保护的前提下,通过科学规划和合理利用,让游客体验自然之美、感知生态价值,并促进区域可持续发展的一种旅游形式。它核心在于平衡“生态保护”、“旅游…

作者头像 李华