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的一点区 ...
随机推荐
- magento jQuery冲突N种方法
在做修改模板的时候在page中加入jquery库发现原本自带的js冲突 商品无法加入购物车,很多js都没有效果 这是jQuery和magento自带prototype的冲突解决版本有很多种,说个简单点 ...
- python-内置函数、装饰器
本节内容:一之前课程回顾: 在书写代码的时候,先写简单的逻辑在写复杂的逻辑.概念梳理:1.函数在传递实参的时候是传递的是引用而不是从内存中重新赋相同值给形参.比如: def test(x): x.ap ...
- Java-->Json解析网页数据
--> 官方解析jar包: 链接:http://pan.baidu.com/s/1pKDnXKv 密码:694d --> 离线Json格式检测工具: 链接:http://pan.baidu ...
- JS几种table切换
1.使用className <!doctype html> <html lang="en"> <head> <meta charset=& ...
- C++ Pirmer : 第十四章 : 重载运算符与类型转换之函数调用运算符与标准库的定义的函数对象
函数调用运算符 struct test { int operator()(int val) const { return (i > 0 ? i : -i); } }; 所谓的函数调用就是一个类重 ...
- VNC-Server安装及配置
一.什么是VNC? VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC ...
- TortoiseGit 添加ssh key
TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在Tortoi ...
- 关于 MAXScript 获取全部文件
MAXScript 官方文档里关于获取文件夹下所有文件的方法 fn getFilesRecursive root pattern = ( dir_array = GetDirectories (roo ...
- django1.9.6 使用 DjangoUeditor (python3.5)
DjangoUeditor https://github.com/zhangfisher/DjangoUeditor 1 DjangoUeditor 安装 pip install DjangoUedi ...
- Cacti-安装和使用详解
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmp get来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RR ...