《深度探索C++对象模型》
Erorr
Erorr
展开
-
《深度探索C++对象模型》- 第1章 关于对象
关于对象,首先要和C语言的struct对比,C++的static和nonstatic函数虽然和类绑定在一起,但他们被放在所有的class object之外,C++在布局和时间上的额外负担是有virtual和多重继承引起的。 1.1 C++对象模式,主要介绍了vptr和vtbl的概念,很多具体的内容还是放到了后面几章进行介绍。 1.2 关键词所带来的差异,原先只是一个哲学问题,但C语言的struct还有一些依赖于内存布局的技巧,C++没办法保证可以继续使用,用指针组合的方式或许可以,但C++最好的忠告就是原创 2010-10-17 19:35:00 · 661 阅读 · 0 评论 -
《深度探索C++对象模型》- 第2章 构造函数语意学
关于C++编译器背着程序员做了太多事情,说的应该就是构造函数的问题。比较难懂的就是“default constructors … 在需要的时候被编译器产生出来”。重点是“在需要的时候”。但看完以后觉得也是比较合理的。 2.1 Default Constructor 的建构操作 1. 如果class的一个成员变量有自己的default constructor,总是要让人家执行一下的。如果class没有默认构造函数,就造一个空壳子然后调用这些自己有默认构造函数的成员变量,如果class有自己的构造函数,这些原创 2010-10-18 18:52:00 · 786 阅读 · 0 评论 -
《深度探索C++对象模型》- 第3章 Data 语意学
说起Data,首先需要注意的是字节对齐问题,这也是当时C语言常考的一个问题。另外就是如果类里面没有data,那么对象的大小会是1而不是0。最后就是C++的data里面有需要支持virtual的一些东西,vptr、__vbc、RTTI信息等。 3.1 Data Member的绑定 这个主要注意的是nested type声明需要放在class的起始处,而其他member function里面的data,可以放在class里面的任何地方。 3.2 Data Member的布局 C++对class的布局主要原创 2010-10-28 00:34:00 · 869 阅读 · 0 评论 -
《深度探索C++对象模型》- 第4章 Function 语意学
这一遍看本书,总的说来收获并不大,也许是还没有遇到相关问题的缘故,另外也和最近的状态有关,有点浮躁。 看这一章有点看不下去的感觉了,没有什么新的收获,总结一下知识点吧。 1. Member Function共有3种:Nonstatic Member Function,Virtual Member Function,Static Member Function。 2. Static Member Function没有this指针,不能被声明为const、volatile或virtual。 3. obj原创 2010-10-29 17:05:00 · 725 阅读 · 0 评论