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个:一个是定义对象模型体系。另一个是如何实现他们。
Inside The C++ Object Model - 01的更多相关文章
- C++学习书籍推荐《Inside the C++ Object Model》下载
百度云及其他网盘下载地址:点我 作者简介 Stanley B. Lippman is Architect with the Visual C++ development team at Microso ...
- inside the C++ Object model总结
一. 关于对象 1.内联函数:能够除去函数调用的开支,每一处内联函数的调用都是代码的复制.这是一种空间换取时间的做法,若函数代码量大或者有循环的情况下,不宜内联(这件事有些编译器会自动帮你做).在类中 ...
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
转载:http://dsqiu.iteye.com/blog/1669614 第一章 关于对象 使用class封装之后的布局成本: class并没有增加成本,data members直接内含在每一个c ...
- Inside The C++ Object Model - 03
object Lessons 1.C++中布局以及存取时间上的的额外负担是由virtual引起的:virtual function.virtual base class.或是由于多继承引起的. 2.C ...
- Inside The C++ Object Model(五)
============================================================================5-0. 一般而言,class 的data me ...
- Inside The C++ Object Model(四)
============================================================================4-1. Member 的各种调用方式静态成员函 ...
- Inside The C++ Object Model(三)
============================================================================3-0. 类所占的内存大小受到三个因素的影响:( ...
- Inside The C++ Object Model(二)
============================================================================2-0. 关键字explicit被引入C++,提 ...
- Inside The C++ Object Model(一)
============================================================================1-1. 关键字struct和class的一点区 ...
随机推荐
- Win10/UWP新特性系列—电池报告
UWP中,新增了当节电模式开启时,App能获取到通知的API,通过响应电源条件的更改,比如咨询用户是否使用黑色背景等来帮助延长电池使用时间. 通过Windows.Devices.Power命名空间中的 ...
- 12-8 php基础
<?php //单行注释/* 多行注释*/ //弱类型语言//var a = 10;/*$a=10;$b = "hello";var_dump($a);$a="wo ...
- mysql取代rand()的高效率随机读取方法
SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 ...
- LintCode Binary Tree Paths
Binary Tree Paths Given a binary tree, return all root-to-leaf paths. Given the following binary tre ...
- oracle 跨数据库取数据
思路:先从另一个数据库里把数据取出来, 然后,把这个数据集合解析,根据这个数据集合拆分组合成一个创建oralce临时表的方法及数据的插入.紧接着就可以写sql语句进行联合查询了. 下面是具体实例的方法 ...
- request.getParameterMap()使用方法
我习惯于加密完 重定向 : Map<String,String[]> getMap = request.getParameterMap(); String[] a = getMap.get ...
- 将JZ2440的调试串口换成com2
众所周知JZ2440 V3很小巧,精致.今天单就JZ2440的串口来讨论一些问题.我们在用串口进行调试的时候,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口.先来看一 ...
- odoo.cli.main()做了什么?
先把代码贴过来 def main(): args = sys.argv[1:] # The only shared option is '--addons-path=' needed to disco ...
- 【C】 03 - 数据类型
程序说到底就是对数据的处理,所以首先要弄清楚需要处理哪些数据,计算机如何存储这些数据.C语言根据需要,抽象出了一些基本数据类型和衍生数据类型.这些可以满足大部分需求,更复杂的抽象数据类型亦可通过它们来 ...
- Unity Shader——Writing Surface Shaders(3)——Surface Shader Lighting Examples
Surface Shader 光照例子 这里有一些自定义光照模型和Surface Shaders的例子.通常的Surface Shader例子在这里. 由于延迟光照在某些自定义的逐材质光照模型中表现得 ...