探索发现

探索奥秘
聆听自然的奥秘|探索科学发现|奇异莫测的大自然

深入探索c对象模型.docx

深入探索C++对象模型第1章:关于对象1.c++ 没有什么比C本质上更大和延迟了。另外,封装后的布局成本(layoutcostsforaddingencapsulation)和额外的访问时间主要是由虚拟1.1virtualfunction 机制支持高效的“运行时绑定”1.2virtualbaseclass 机制实现多次出现继承系统中的基类具有单一且共享的实体2.c++objectmodel(c++objectmodel)相比简单对象模型和表驱动对象模型的优点和好处。主要的好处是用编译时间代替执行时间。最好2.1 每个类都有一个对应的virtualtable 来存放虚函数表needle 2.2 每个classobject 都隐式添加了一个vptr 指向这个类virtualtable,用于RTTI 的type_infoobject 也关联了不同的struct 和虚拟表中3. 关键字的类。战略上正确的 struct3.1 用于 c 结构体中的技巧(例如当结构体用作链表时)。是否可行,取决于编译器对protected 和private 的定义。 C++ 中3.2cstruct 的合理用法是将类对象的一部分(或全部)传递给 C 函数。使用 struct 与 class 结合。有效解决4.objects的区别深入探索c 对象模型,ADT等于abstractdatatypemodel,我觉得可以叫object-based来区分面向对象,OO等于object-orientedmodule4.1ADT(也叫OB)和OO太不一样了,只有OO Mid-virtual才能大显身手。

两者之间的互操作性是危险的。用OB来表达OO很容易导致数据被切片(sliced)4.2 唯一突出OO的方法就是通过(指针)对象和虚函数。另外深入探索c 对象模型,所有的信息都可以在编译时确定而不是运行时5.一个classobject需要多少显存?以下三个方面需要考虑5.1及其非静态数据成员5.2的总大小加上5.3需要对齐而构成的任何空间加上内部为支持虚拟而​​形成的任何额外负担(开销)注:我认为带虚函数的OB的虚函数的调用也是由编译时间决定的。 ,不是运行时。这使得 inlinevirtualfunction 有效(参见本书第一章的最后一页)。 ***C++ 是一种相当混合的面向对象语言。 Stl泛型的存在是对OB特性的最好解释(所有流类除外)。 OO 部分依赖于needles 和references 来显示,但所指向的实体必须与对象所在的内存类型(堆栈、堆)无关。 Chapter 2 Constructor Semantics 6.编译器并不总是合成默认的构造器(类似copyconstructor,赋值),它只有在编译器需要的时候才合成构造器。 Nontrivialdefaultconstructor 是编译器合成的函数。 6.1 memberclassobject with defaultconstructor6.2baseclass6.3 with defaultconstructor

探索发现 版权所有,未经允许不得转载:探索号 » 深入探索c对象模型.docx
分享到: 更多 (0)

猜你也想读下面的文章: