Inside The C++ Object Model - 01

前言

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个:一个是定义对象模型体系。另一个是如何实现他们。

上一篇:HTML之:让网页中的标签属性统一设置-如‘新窗口打开’


下一篇:iOS10 app连接不上网络的问题