C++幕后故事
文章平均质量分 83
一直以来对C++的各种神奇套路感到非常的好奇,也为之所倾倒,所以我借助《深入探索C++对象模型》这本书,配合自己的浅薄的认识,在VS2013下剖析各种原理。
蓑衣夜行
不断学习,不断进步,成为一个手艺人
展开
-
C 幕后故事(一)--this指针调整
1.什么叫this指针调整?在c++中多继承过程,根据访问不同的父类成员变量或者是成员函数,同一个实例对象会出现不同的基址(对象的地址,类似于你在不同的场合就会有身份的转换,在家的身份,在学校,在公司的等等),这种现象叫做this指针基址调整。2.如何调整?1.如果继承的顺序是A,再B,那么初始化时先A再B,内存布局如下图1所示。2. 如果继承的顺序还是是A,再B,那么初始化时...原创 2019-10-10 09:32:19 · 1455 阅读 · 6 评论 -
C++幕后故事(二)--编译器合成默认的构造函数
编译器合成缺省(无参)的构造函数1.先考虑一个问题为什么c++中有构造函数?这个可以从语言设计的角度来看这个问题。体现一个实例化的对象生命周期的完整性,一个对象在初始化的时候,让使用者有机会做些额外的初始化操作。同样,一个对象是消亡的时候,也要使用者有机会去释放资源。举个例子:吃饭前先洗手(构造函数),吃完饭在擦嘴(析构函数),这是个好习惯。但是你不洗手,不擦嘴,也没关系,只是这不是个好习...原创 2019-10-10 10:16:05 · 519 阅读 · 1 评论 -
C++幕后故事(三)--程序语义转化
读者如果觉得我文章还不错的,希望可以多多支持下我,文章可以转发,但是必须保留原出处和原作者署名。更多内容请关注我的微信公众号:cpp手艺人。先来看两段代码执行效率是一样?//oa的一系列操作...OptimizationA GetOpt(){ OptimizationA oa; //oa的一系列操作... return oa;}void GetOpt(Opt...原创 2019-10-11 15:47:09 · 971 阅读 · 1 评论 -
C++幕后故事(四)--虚函数的故事
读者如果觉得我文章还不错的,希望可以多多支持下我,文章可以转发,但是必须保留原出处和原作者署名。更多内容请关注我的微信公众号:cpp手艺人。提出问题:我们讨论前提都是在windows 10 vs2013 debug模式下1.虚函数指针和虚表在哪里?2.我们如何手动调用虚函数?3.为什么只有在子类以父类的引用或者指针的形式才能出现多态?4.虚函数的调用为什...原创 2019-10-11 18:51:16 · 690 阅读 · 2 评论 -
C++幕后故事(六)--函数我来调你了
C++幕后故事(六)–函数我来调你了这个章节我们会学到以下3个知识点:1.不同的类型函数是怎么调用的。2.成员函数指针各个模型实现的原理是什么以及各个指针的效率如何。3.inline函数的注意事项。1.普通成员调用看下面的代码,这里面我分别调用了类成员和全局函数class NormalCall{public: void Add(int number) { ...原创 2019-10-24 15:59:12 · 550 阅读 · 1 评论 -
C++幕后故事(七)--一个对象的生与死
C++幕后故事(七)–一个对象的生与死这节里面我们会学习到以下四点:1.对象的生成时机2.对象构造过程和POD类型3.对象的复制语意4.析构语意1.对象生成的时机根据对象的控制力度不同,对象的生成时机也是不一样的。我们可以把它分为两类:1.new操作符用户手动控制时机,随时new,随时生成。2.编译器控制下也是有细微的差别,请看下面的表格。全局对象/...原创 2019-10-28 13:45:59 · 675 阅读 · 1 评论 -
C++幕后故事(八)--给我来一打对象
这节我们的知识点就两个:1.对象数组是如何构造的。2.对象数组是如何析构的。在C++幕后故事(七)中我们详细的解析了一个对象的生与死,在了解了一个对象的生与死的过程中基础上,这一次我们要一次性搞清楚多个对象的是如何构造和析构的。1.对象数组是怎么构造看代码:int g_number = 0;class ObjClass{public: explicit ObjCla...原创 2019-10-30 10:21:13 · 687 阅读 · 2 评论 -
C++幕后故事(九)--我们来new个对象
读者如果觉得我文章还不错的,希望可以多多支持下我,文章可以转发,但是必须保留原出处和原作者署名。更多内容请关注我的微信公众号:cpp手艺人。这个章节我们主要学习以下几个知识点:1.数据成员绑定时机。2.多种模型下数据成员布局。3.数据成员如何读取的。4.进程内存布局1.数据成员绑定时机大家一看标题可能有点懵了,什么叫数据成员的绑定时机。请随我看段代码,这段代码节选自《深入探索C++...原创 2019-10-14 10:52:21 · 1076 阅读 · 1 评论 -
C++幕后故事(十)--对象离我们而去
C++幕后故事(十)–对象离我们而去三国演义里面说过一句话:天下大事,合久必分,分久必合。有相聚,就有分离的时候。今天我们主要聊聊operator delete的故事今天我们主要学习知识点:1.delete的调用流程。2.我们重载了delete之后能干啥。3.placement delete有啥用。1. operator delete操作符的原理1.1 operator dele...原创 2019-11-04 10:56:27 · 494 阅读 · 1 评论