zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [Contest on 2020.4.2] 影帝杯狂欢赛
    [BZOJ 3821] 玄学
    CodeForces 432D Prefixes and Suffixes
    CodeForces 17E Palisection
    CodeForces 665E Beautiful Subarrays
    BZOJ 2989 数列
    changeeksdja
    Jmeter学习——1
    LoadRunner监控Linux与Windows方法(经典)
    LR检查点小结
  • 原文地址:https://www.cnblogs.com/ridox/p/3459280.html
Copyright © 2011-2022 走看看