• Inside The C++ Object Model


    前言 - 什么是C++对象模型

    C++对象模型包括2个方面的含义:

    1.语言中直接支持面向对象程序设计的部分

    2.对于各种(面向对象)支持的底层实现机制。

       无论是什么语言,都需要转换为汇编。很多面向对象特性不是汇编所原生支持的,这也许是C和C++区别最大的地方吧。

       在C中大部分语言层面的机制都可以得到汇编的支持,例如函数调用,循环,条件转移,指针等等...

       在C++中,很多特性不被汇编语言所支持,例如继承,虚函数,运算符重载,构造函数等。所以需要提供一种实现机制,

       将这些特性转换为实实在在的汇编代码。

    关于"不变量"

    在C++对象模型的实现过程中,是需要有一些不变量存在的。有一些东西必须在 编译期间就固定下来。例如虚函数实现的

    虚函数表,在运行时是不允许修改的(这有别于一些动态类型的语言或者脚本),这些“不变量”使得虚拟函数调用更加快速,

    但是带来的成本是执行期间的弹性。

    关于本书的目的:

    1.解释C++底层机制,让程序员能写出效率更高的代码

    2.消除人们对C++的误解

    关于静态初始化的例子:

    对于静态初始化有2种方式:munch、patch。

    所谓monch方式:书中的流程:CC产生一个可执行文件->用NM导出符号->寻找sti开头的函数,插入main的头部,产生一个新的C文件,调用这些符号->编译新的.c

    patch方式:针对coff格式,直接修改可执行文件。

    这些sti函数的次序是未定义的。

  • 相关阅读:
    Navicat for SQLite之外键(05)
    UIButton
    多线程中的API
    UIImageView
    IOS中实现单例
    IOS中的多线程【二】— NSOperation和NSOperationQueue
    IOS中的多线程
    OC中新增的数据类型
    【转】c# DBF数据库导入导出实例
    【经验】学习新知识的经验
  • 原文地址:https://www.cnblogs.com/zxlben/p/3435838.html
Copyright © 2020-2023  润新知