博客专栏  >  编程语言   >  跟我一起深度探索C++对象模型

跟我一起深度探索C++对象模型

解析经典书籍,深度理解学习C++对象模型。

关注
3 已关注
15篇博文
  • 深度探索C++ 对象模型【第五章2】

    1:当C++类导入继承机制,出现虚函数之后,vptr使得class产生了膨胀作用 构造函数附加了代码,将vptr初始化class必须合成一个拷贝构造函数和赋值构造函数,其现在是nontrival的...

    2017-11-08 21:32
    34
  • 深度探索C++ 对象模型【第六章1】

    1:如果对象仍然存活,而程序有一个以上的离开点,那么析构函数就会被放置在每一个离开点之前的位置,即使很有可能程序执行不到后面的离开点。所以一般而言,我们会将对象尽可能放置在使用它的那个程序区的附近,这...

    2017-11-09 17:27
    26
  • 深度探索C++ 对象模型【第七章1】

    1:template编程风格 它是标准模板库(STL)的基础参数化技术 2:template类,定义一个指针指向特定的实例时,程序中并没有发生什么,因为指针并不是对象,编译器不需要知道与该clas...

    2017-11-13 09:23
    229
  • 深度探索C++ 对象模型【第五章3】

    1:总结一下拷贝赋值运算符 较为复杂,不做细节讨论其在虚拟继承下行为不佳,需要加以小心的设计和使用说明建议尽可能不要允许虚基类函数的拷贝操作建议不要在虚基类函数中声明数据 2:Explict In...

    2017-11-11 09:02
    346
  • 深度探索C++ 对象模型【第五章1】

    1:拥有纯虚函数的基类不可能拥有实例对象。virtual =0 2:一般而言,class 的data member应该被初始化,而且只能以两种方式初始化 在constructor中指定初值在m...

    2017-11-09 09:11
    225
  • 深度探索C++对象模型 【第四章2】

    1:关于取地址的艺术~ 直接取一个非静态成员变量的地址时,得到的是其在class中的真实offset再加1。当绑定到真实的对象上再取其地址时,得到的是其在内存中的真正地址。取一个非静态成员函数的地...

    2017-11-07 09:16
    59
  • 深度探索C++对象模型【第三章2】

    1:通过对象指针还是对象来存取数据成员之间的差异: 当该类是一个派生类,且其继承链中有一个虚基类存在,并且存取的member成员是一个从该虚基类中继承而来的成员时,就会有重大的差异。此时通过指针来...

    2017-11-06 09:16
    172
  • 深度探索C++对象模型 【第四章1】

    1:静态成员函数(static member function)不可能是做到以下两点: 不可能直接存取非静态成员变量不可能被声明为const

    2017-11-06 09:23
    214
  • 深度探索C++对象模型【第三章1】

    1:编译器会为每一个空class安插一个char,使得这个class的两个objects对象在内存中配置独一无二的内存地址。这就解释了空类的大小为何为1(即使该类为派生类,也需要为其安插一个char来...

    2017-11-05 09:28
    108
  • 深度探索C++ 对象模型【第二章1】

    1:在C++的构造函数上,往往编译器会做很多你不知道的事,就比如说构造函数的隐式转换,虽然有时候很方便,但是在某些情况下会造成一些意想不到的情况发生,explict关键词就因此而生~! 2:当编译器需...

    2017-11-04 09:00
    299
  • 深度探索C++ 对象模型【第二章2】

    1:NRV的优化会出现在,函数以传值的方式传回一个类对象,当该类有一个拷贝构造函数时,编译器会对你的代码进行一定的背后优化。 2:成员初始化时,当出现以下四种情况,必须使用成员初始化列表的操作: ...

    2017-11-04 09:02
    271
  • 深度探索C++ 对象模型【第一章1】

    几个值得注意的点: 1:在C语言中,数据和处理数据的操作(函数)是分开声明的。C语言本身没有支持“函数与数据”之间的关联性。这种程序方法叫做程序性,算法函数处理的是外部的数据。 2:在C++中,我...

    2017-10-24 22:42
    100
  • 深度探索C++ 对象模型【第一章2】

    1:为了维护与C之间的兼容性,C++保留了关键词struct。那么我们具体要在什么时候来去对class和struct作出用法区分呢?

    2017-11-03 09:00
    353
  • 深度探索C++ 对象模型【第一章3】

    1:在继承关系中,不存在从基类到派生类的隐式类型转换 2:派生类到基类的自动类型转换只对指针或是引用有效 3:ADT 抽象数据类型,现在也被称为OB(object based) 一个典型的例子就是...

    2017-11-03 09:01
    275
  • 深度探索C++对象模型之前言

    为什么要学习C++对象模型? 侯捷大师给出的答案是:C++的一个特殊之处就是编译器会帮程序员做很多的“事”:对象的构造函数、析构函数、虚拟继承、多态、拷贝构造函数等等,它会为我们合成一系列的额外函数(...

    2017-10-09 17:02
    81
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部