前言

1.Foundation项目是一个定义大系统开发模型的项目,又叫Grail。

2.Grail中编译器被分为:parser(语法分析)->type checking -> simplification -> code generation

simplification 用于转换程序的内部表现,我的理解其实是预处理,有3种转换:

a.与编译器相关的转换,

  对于表达式:fct()的解释可能有2种:(1)调用fct函数。(2)对象fct重载了函数调用"()"操作符号。当(2)情况出现时,就需要做一些调整。

b.语意转换

处理构造/析构,支持memberwise初始化,memberwise复制,安插转换操作符(隐式类型转换?),临时对象,调用构造/析构等..

c.程序代码和对象模型的转换

支持虚函数,虚基类,继承,new/delete,对象数组等。

我的问题是:以上三个分类的依据是什么?为什么采用这样的分类方式?

对于simplification的定位是实现一个对象模型体系,在其中,对象实现是一个虚拟接口,支持各种对象模型。我的理解:simplification定义一个规范,

这个规范描述了在实现一个对象模型体系需要需要处理的问题有哪些,以及这些问题之间的关系是什么。对象的实现就是如何解决这些问题,简单的

可以理解为:就是如何把C++代码转换成C代码。

本书的目的在我看来有有2个:一个是定义对象模型体系。另一个是如何实现他们。

Inside The C++ Object Model - 01的更多相关文章

  1. C++学习书籍推荐《Inside the C++ Object Model》下载

    百度云及其他网盘下载地址:点我 作者简介 Stanley B. Lippman is Architect with the Visual C++ development team at Microso ...

  2. inside the C++ Object model总结

    一. 关于对象 1.内联函数:能够除去函数调用的开支,每一处内联函数的调用都是代码的复制.这是一种空间换取时间的做法,若函数代码量大或者有循环的情况下,不宜内联(这件事有些编译器会自动帮你做).在类中 ...

  3. 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

    转载:http://dsqiu.iteye.com/blog/1669614 第一章 关于对象 使用class封装之后的布局成本: class并没有增加成本,data members直接内含在每一个c ...

  4. Inside The C++ Object Model - 03

    object Lessons 1.C++中布局以及存取时间上的的额外负担是由virtual引起的:virtual function.virtual base class.或是由于多继承引起的. 2.C ...

  5. Inside The C++ Object Model(五)

    ============================================================================5-0. 一般而言,class 的data me ...

  6. Inside The C++ Object Model(四)

    ============================================================================4-1. Member 的各种调用方式静态成员函 ...

  7. Inside The C++ Object Model(三)

    ============================================================================3-0. 类所占的内存大小受到三个因素的影响:( ...

  8. Inside The C++ Object Model(二)

    ============================================================================2-0. 关键字explicit被引入C++,提 ...

  9. Inside The C++ Object Model(一)

    ============================================================================1-1. 关键字struct和class的一点区 ...

随机推荐

  1. 【第一篇】Android环境搭建

    安装不易,且安且珍惜! 1 下载 Java JDK (http://java.sun.com/javae/downloads/ ) (Windows 版) [配置环境变量]:安装完成后,设置JAVA_ ...

  2. python3.2 + PyQt4界面开发hello world

    需要先安装python3.2 然后安装python3.2对应的PyQt4界面库版本 import sys from PyQt4 import QtGui , QtCore app = QtGui.QA ...

  3. 没有好看的 Terminal 怎么能够快乐地写代码

    换了好几回Terminal默认的配色,真是难看哭了,作为一只有生活追求的序媛,当然不能安(zuo)之(yi)若(dai)素(bi)了 1 自定义 Terminal问候语 sudo pico /etc/ ...

  4. Python::OS 模块 -- 进程管理

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...

  5. surge for mac出测试版本了

    这两天一直在MAC上试图连接我的shadowsocks服务,使用shadowsocksX一直没能连接到服务器.服务器本身是没有问题的,因为我的thinkpad和iphone都可以正常使用.结果就试着使 ...

  6. 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969

    最大的位或 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. Array数组

    array_diff_key() 例子 , , 'purple' , , 'yellow' ); var_dump(array_diff_key($array1, $array2));?> 上例 ...

  8. 【转】Jquery ajax方法解析返回的json数据

    转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...

  9. UVa 10815 安迪的第一个字典

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. 【ASP.net】Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...