密码管理请下载:
http://a.app.qq.com/o/simple.jsp?pkgname=com.wa505.kf.epassword
1. 关于对象
1.1. 虚表:
1.1.1. 每一个class在编译时期产生一堆指向Virtual函数的指针. 并且放在表格中.[由于虚表定义在与类有关的静态数据区域,因此,一定是在编译时期完成].与此同时,class的RTTI也放入了第一个slot中.
1.2. 指向虚表的指针:
1.2.1. 每一个ClassObject被添加一个指针vptr.这个指针在运行时(构造函数,copy构造函数, 赋值运算符), 被指向对应的虚表, 当然了,这个虚表也包含RTTI信息.
1.3. C++以以下方法支持多态.
1.3.1. 将一个子类指通过”赋值”操作符, 转换为父类指针.
1.3.2. 通过虚函数机制.
1.3.3. 通过dynamic_cast 和typeid运算符。
2. 构造函数语义学
2.1. Default Constructor的建构操作
2.1.1. 带有Default Constructor的Member Class Object
2.1.2. 带有Default Constructor的Base Class
2.1.3. 带有Virtual Function 的cass
2.1.4. 带有一个Virtual Base Class 的class
2.2. Copy Constructor的建构操作
2.2.1. Bitwise Copy Semantics
2.2.2. 不要Bitwise Copy Semantics!的四种情况与 Default Constructor类似。
2.2.3. 重新设定Virtual Table(不能Bitwise Copy).
2.2.4. 重新处理Virtual Base Class Subobject. 因为在不同的同一继承层次的子类中,vbtr的值是不同的(不能Bitwise Copy).。
2.3程序转换语意学Program Transformation Semantics
2.3.1 明确的初始化操作(Explicit Initialization)。重写定义,并明确调用copy构造
2.3.2 参数的初始化(隐式初始化)。除了初始化之外,还修改函数的签名。(老版本的BorlandC++没有修改)
2.3.3 返回值的初始化(Return Value Initialization).
改写函数签名,改为通过参数来返回。例如foo(A& a)
2.3.4 用者层面做优化(Optimization at the user Level) 使用者通过一些设计来优化代码。例如可以节约一次默认构造。
2.3.5 编译器优化:节约一次copy构造。但是有可能会破坏程序作者的意图,例如,如果基于copy构造做了一些事情,那么就可能会报错。对于直接返回一个值的函数。例如
A foo(){
A a;
a.f();
return a};
首先改造为
Foo(A& a){
a.A::A()
a.f()
a.A::A(a)
}
然后优化掉copy构造(C++标准是允许的)
Foo(A& a){
a.A::A()
a.f()
}
2.3.6 Copy Constructor:要还是不要?
当编译器提供NRV优化时,最好还是提供一个。这样在大量的基于成员的初始化memberwise(与Bitwise相对)时,可以激活NRV。
2.4成员们的初始化队伍(Member Initialization List)
2.4.1 初始化一个reference member时
2.4.2 初始化一个constmember时
2.4.3 BaseClass 的构造函数没有默认构造时,需要一组参数。
2.4.4 MemberClass的构造函数没有默认构造时,需要一组参数
2.4.5 另外,初始化的次序由member的生命次序决定,不是由,初始化列表中的次序决定。最好避免在初始化列表中,用一个member为另外一个member设定初值。如果以member来初始化baseclass,那么问题将会更加严重。
Member Initialization List的执行顺序可能会因为插入新的代码而打乱。如果以member来初始化baseclass,或者memberclass。
3. Data语意学(The Semantics of Data)
4. Function语意学(The Semantics of Function)
相关推荐
总结笔记,关于侯捷翻译的《深入探索c++对象模型》的笔记 作者Lippman参与设计了全世界第一套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)...
深度探索C++对象模型的阅读笔记,可以看看别人是怎么学习C++的
深入探索c++对象模型 设计模式c++ pdf 深入探索c++对象模型 设计模式c++ pdf 深入探索c++对象模型 设计模式c++ pdf 深入探索c++对象模型 pdf 设计模式c++ pdf
深度探索C++对象模型读书笔记
深入探索c++对象模型 inside the c++ object model Stanley B. Lippman 侯捷译
深度探索c++对象模型(2012版本)
书中涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。 对于C++底层机制感兴趣的读者,这必然是一本让你大呼过瘾的绝妙好书。如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么...
在拥有C++编程基础上,更深一步的掌握C++对象模型,对深入理解C++有一定帮助。
深度探索C++对象模型 C++程序员必看编程书籍
这本书探索“对象导向程序所支持的C++对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、...
深度探索C++对象模型
本人自己的学习《深度探索C++对象模型》的笔记,但实际上内容为本人自己的实验结果,与原书无关,绝对原创。
深度探索C++对象模型 超高清
深度探索C++对象模型_中英 深度探索C++对象模型_中英 深度探索C++对象模型_中英
深度探索C++对象模型.pdf,想深入学习C++的可以看看,侯捷翻译的好书
该资源包含侯捷的两本书《STL源码剖析》&《深入探索C++对象模型》,讲的都是底层的,讲的很深,也很难(如果你只想用STL,建议不要看这本书),第二本书讲对象讲的很好,比较难。如果想求职程序员,最好还是多啃一下...
《深度探索C++对象模型》专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得...
深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象模型 PDF中文清晰版.zip深度探索C++对象...
深度探索c++对象模型清晰版,带书签~~~~~~~~~~~~~~~~~~~~~~~~~