随笔分类 -  读书笔记

深度探索C++对象模型 第二章 读书笔记
摘要:编译器合成的trivial构造函数不执行任何操作。只有nontrivial的构造函数才执行有用的操作。其实implicitly default constructor并没有被合成出来。trivial和nontrivial是指编译器自动生成的构造函数。不含有任何构造函数的类,编译器为其合成nontrivial构造函数有以下四种情况:1.该类中的对象成员含有默认构造函数。(按声明顺序依次调用成员对象的默认构造函数)(疑问:如果对象成员也没有给出默认构造函数,该类由编译器合成的构造函数是trivial还是nontrivial.我觉得应该是trivial的。求解。20110718).2,该类的基类中含 阅读全文

posted @ 2011-08-18 11:31 ithzhang 阅读(160) 评论(0) 推荐(0)

C++临时对象(2)
摘要:与临时对象的斗争(下) 作者:唐风原载:www.cnblos.com/liyiwen在上篇 里,我们看到了 (N)RVO 和右值引用,下面我们来看看表达式模板。Expression Template(表达式模板,ET) 如果有“系统地”学习过 C++ 的模板编程,那么你应该已经知道 Expression Template 这个“东西”。在模板圣经《C++ templates》的第 18 章专门用了一整章来讲这个技巧,(是的,我认为它是一种技巧)。足以见得它比较复杂,也很重要。说起 Expression Template 产生,“临时对象”也是“功臣”之一啊。还是来用例子来说明(你能很容易找到这 阅读全文

posted @ 2011-08-09 16:40 ithzhang 阅读(198) 评论(0) 推荐(0)

C++临时对象(1)
摘要:作者:唐风出处: http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。C++ 是一门以效率见长的语言(虽然近来越来越多的人“不齿”谈及效率,我深以为不然 ,在某一次的程序编写中不对效率锱铢必较并不意味意味着我们就不应该追求更多的更好的做法)。总之吧,相比起其它语言,程序员们在使 C++ 的时候会更加有意识地去避免没有效率的做法。在C++ 的程序中,临时对象的产生就是损及效率的“恶因”之一,因此也产生出一些意思的技术和优化手段,这篇文章里我总结一下最近在这些方面学习的一些 阅读全文

posted @ 2011-08-09 16:39 ithzhang 阅读(207) 评论(0) 推荐(0)

C++虚函数表解析
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没 阅读全文

posted @ 2011-08-09 16:38 ithzhang 阅读(109) 评论(0) 推荐(0)

《深度探索C++对象模型》读书笔记(2)。
摘要:default constructor仅在编译器需要它时,才会被合成出来。 通常来说,由编译器合成出来的default constructor是没啥用的(trivial),但有以下几种例外: (1)带有“Default Constructor”的Member Class Object 如果一个class没有任何constructor,但它内含一个member object,而后者有default constructor,那么编译器会在constructor真正需要被调用时未此class合成一个“nontrivial”的default constructor.为了避免合成出多个d... 阅读全文

posted @ 2011-08-09 16:35 ithzhang 阅读(161) 评论(0) 推荐(0)

《深度探索C++对象模型》读书笔记(1)
摘要:《深度探索C++对象模型》读书笔记(1)。 在C++中,有两种class data members:static和nonstatic,以及三种class member functions:static、nonstatic和virtual.已知下面这个class Point声明: class Point ...{public:Point(float xval);virtual ~Point();float x() const;static int PointCount();protected:virtual ostream& print(ostream &os) const;fl 阅读全文

posted @ 2011-08-09 16:32 ithzhang 阅读(148) 评论(0) 推荐(0)

c++继承中的内存布局
摘要:今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译 译者前言 一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C++对象模型比较好的一个出发点。这篇文章以前看到时就觉得很好,旧文重读,感觉理解得更多一些了,. 阅读全文

posted @ 2011-08-09 16:31 ithzhang 阅读(256) 评论(0) 推荐(0)

导航