• Inside the c++ object module 阅读摘要


    这本书是 Stanley B. Lippman于1996年所写,而最早的c++标准是 ISO/IEC 14882:1998[18],即C++98。

    Chapter 1: Object Lessons

    1.1 类定义:包含普通函数,虚拟函数,静态函数;静态域和非静态域

       

    a simple object module : 这个模型中,一个对象就是一个slot的序列,一个slot代表一个成员,排列顺序与声明顺序相同。所有成员都通过指针访问, 这引入了指针--成员的概念。

    a table-driven object module:  通过一个数据成员表直接保存数据,一个成员函数表保存所有成员函数的引用。

    c++ object module : 非静态数据成员直接在对象中分配,静态数据成员在对象外独立分配,静态和非静态函数也在对象外。对于虚拟函数,对象中保存了一个vptr指向一个虚拟函数表,表中保存了虚拟函数的指针和type_info(用于runtime type identification)。 主要的缺点是:由于非静态数据成员直接分配在对象中,即使使用该对象的源码没有改变,也需要重新编译。

    增加继承:直接包含一个指向基类的指针,或者放弃所有的间接性,直接在对象中保存基类的数据成员。虚拟基类的实现时,要么在对象中增加一个指针,要么增加一个虚拟基类表或者扩展已有的虚拟表,Section 3.4 具体讨论。

    1.2 A Keyword Distinction

  • 相关阅读:
    分段、分页&&内存碎片、外存碎片
    mysql中的事务处理
    算法的在线演示网站
    为什么要使用树以及使用什么树
    平衡多叉树--B-Tree(B树)
    MVCC--多版本并发控制机制
    mysql中的锁
    平衡二叉树--红黑树(RB-Tree)
    平衡二叉树--AVL树
    自平衡方式--旋转
  • 原文地址:https://www.cnblogs.com/ridox/p/3459280.html
Copyright © 2020-2023  润新知