首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C++幕后故事
雄大
创建于2024-11-10
订阅专栏
探究c++幕后的故事
暂无订阅
共8篇文章
创建于2024-11-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
C++幕后故事(七)--一个对象的生与死
根据对象的控制力度不同,对象的生成时机也是不一样的。 1.new操作符用户手动控制时机,随时new,随时生成。 2.编译器控制下也是有细微的差别,请看下面的表格。 我们已经知道对象在什么时候生成,但是对象在生成过程除了我们自己写的构造函数里面的动作,编译器在幕后也帮我们做了很多…
C++幕后故事(十)--对象离我们而去
三国演义里面说过一句话:天下大事,合久必分,分久必合。有相聚,就有分离的时候。今天我们主要聊聊operator delete的故事 1. operator delete操作符的原理 看到了这张流程图,你一定对图中○1,○2有几点有疑问。 大家请看这段代码,是否会释放内存。 如果…
C++幕后故事(一)--this指针调整
或者关注我的微信公众号:cpp手艺人。 简单的说通过调整子类的this指针以实现访问各个父类的属性。 在c++中多继承过程,根据访问不同的父类成员变量或者是成员函数,同一个实例对象会出现不同的基址(对象的地址,类似于你在不同的场合就会有身份的转换,在家的身份,在学校,在公司的等…
C++幕后故事(二)--编译器合成默认的构造函数
这个可以从语言设计的角度来看这个问题。体现一个实例化的对象生命周期的完整性,一个对象在初始化的时候,让使用者有机会做些额外的初始化操作。同样,一个对象是消亡的时候,也要使用者有机会去释放资源。举个例子:吃饭前先洗手(构造函数),吃完饭在擦嘴(析构函数),这是个好习惯。但是你不洗…
C++幕后故事(三)--程序语义转化
我们自己写的代码,自己看一回事,但是在编译器的角度来看又是一番风景。所以这次我们换个角度来看待问题,分别从初始化操作、优化、成员列表初始化三个方面探究下编译器会怎么翻译我们的代码。 简单来说为了初始化对象时的效率。看上面的代码第7行放在初始化列中,从编译器的角度看就是直接调用了…
C++幕后故事(四)--虚函数的故事
更多内容请关注我的微信公众号:cpp手艺人。 这里我解释下常用的和常见的一些指令,更多的需要大家自己课后学习。 汇编中有些通用的寄存器分别为eax,ebx,ecx,edx,esi,edi,esp,ebp,es,ds,ss,sp等等,类似高级语言中的变量,但是这些变量的数量和名称…
C++幕后故事(五)--数据你在哪里?
更多内容请关注我的微信公众号:cpp手艺人。 1.数据成员绑定时机。 2.多种模型下数据成员布局。 3.数据成员如何读取的。 大家一看标题可能有点懵了,什么叫数据成员的绑定时机。请随我看段代码,这段代码节选自《深入探索C++对象模型》 如果我调用了Point3D的X()返回的这…
C++幕后故事(六)--函数我来调你了
把上面的源代码保存文件main.cpp,然后在linux平台上用g++ -Wall –g main.cpp –o main,再用nm main,就会导出main里面的符号等等其他东西。我把重要的东西拿出来看下。 从这里我们这里可以看出,我们写代码的时候名字就是Add,但是编译完…