C++对象模型
文章平均质量分 85
ZeeCoder
这个作者很懒,什么都没留下…
展开
-
C++对象模型的那些事儿之四:拷贝构造函数
前言对于一个没有实例化的空类,编译器不会给它默认生成任何函数,当实例化一个空类后,编译器会根据需要生成相应的函数。这类函数包括一下几个:构造函数拷贝构造函数析构函数赋值运算符在上一篇博文C++对象模型的那些事儿之三:默认构造函数中讲到,编译器在需要的时候会合成一个空构造函数。本篇博文中就重点来介绍一下第二主角:拷贝构造函数。引子正如Linus Torvalds说的一句话:“Talk is原创 2016-08-11 15:09:02 · 808 阅读 · 0 评论 -
C++对象模型的那些事儿之一:对象模型(上)
前言很早以前就听人推荐了《深入理解C++对象模型》这本书,从年初买来到现在也只是偶尔翻了翻,总觉得晦涩难懂,放在实验室上吃灰吃了好久。近期由于找工作对C++的知识做了一个全面系统的学习,基础相对扎实了不少,于是,又重新拿起这本书,突然觉得里面的知识也不那么难懂,而且越看越有意思,不愧是C++高阶教程啊!耐着性子,抓着头皮花了两个多月,总算对其中的知识有了一些理解,部分章节反反复复的看,每次都有新的收原创 2016-08-11 15:06:50 · 1199 阅读 · 3 评论 -
C++对象模型的那些事儿之三:默认构造函数
前言继前两篇总结了C++对象模型及其内存布局后,我们继续来探索一下C++对象的默认构造函数。对于C++的初学者来说,有如下两个误解:任何class如果没有定义default constructor,就会被合成出来编译器合成出来的default constructor会显示设定“class内每一个data member的默认值“如果读者对这两句话理解颇深,了解里面的陷阱,那么可以不必阅读下去;倘原创 2016-08-11 15:08:31 · 682 阅读 · 1 评论 -
C++对象模型的那些事儿之六:成员函数调用方式
前言C++的成员函数分为静态函数、非静态函数和虚函数三种,在本系列文章中,多处提到static和non-static不影响对象占用的内存,而虚函数需要引入虚指针,所以需要调整对象的内存布局。既然已经解决了数据,函数等在内存中的布局问题,下一个需要考虑的就是如何调用,上述提到的三种函数的调用机制都不一样,其间的差异正是本篇博客需要讨论的。非静态成员函数C++的设计准则之一就是:非静态成员函数至少必须和原创 2016-08-11 15:09:50 · 1671 阅读 · 0 评论 -
C++对象模型的那些事儿之二:对象模型(下)
前言上一篇博客C++对象模型的那些事儿之一为大家讲解了C++对象模型的一些基本知识,可是C++的继承,多态这些特性如何体现在对象模型上呢?单继承、多重继承和虚继承后内存布局上又有哪些变化呢?多态真正的底层又是如何实现呢?本篇博客就带大家全面理解一下C++对象模型,从而理解上述疑惑。引例还是以上篇博客的Animal类说起,假设我们有一个Dog类,它继承了Animal类。程序如下:class Anima原创 2016-08-11 15:07:40 · 1048 阅读 · 2 评论