摘要: 1、关于普通char如何选择的问题是由实现决定的(C.1, C.3.4)。C++提供了另外两个类型,它们都确切地回答了这个问题:signed char保存的值是-128~127,而unsigned char保存的值是0~255。P662、让常用的和局部的名字比较短,让不常用的和全局的名字比较长。P773、如果所用的内部类型表示某种可能变化的值,请用typedef为它定义一个有意义的名字;4.9.7节 P77 例如:typedef int int32;4、用typedef为类型定义同义词,用枚举或类去定义新类型。P775、几个忠告 [12] 避免有关证书大小的不必要假设 [13] 避免有关... 阅读全文
posted @ 2012-04-17 21:54 ziyoudefeng 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 1、一般来说,将一个名字空间中的所有名字统统倾倒进全局名字空间里,并不是一种好的做法。P412、迭代器和I/O P53 要做出一个ostream_iterator,我们需要描述被使用的将是哪个流,还要描述写入其中的对象的类型。例如,我们可以定义一个引用了标准输出流cout的迭代器:ostream_iterator<string> oo(cout); 一个istream_iterator就是某种东西,它使我们可以像从容器独处一样从输入流中读出:istream_iterator<string> ii(cin);举例:P54 1 #include "stdafx.h 阅读全文
posted @ 2012-04-17 21:39 ziyoudefeng 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1、虚函数 P33 即使调用者并不知道对象的大小以及它的数据布局,位于vtbl里的函数也使对象能正确地使用。调用者需要知道的所有东西就是Stack的那个vtbl的位置,以及对各个虚函数应该使用的下标。这种虚函数调用机制的效率可以做得基本上与“正常函数调用”机制相同。其空间开销是带有虚函数的类的每个对象里包含一个指针,而每个这样的类需要有一个vtbl。2、模板是一种编译时的机制,因此,与“手工编写的代码”相比,它们的使用并不引起任何额外的运行时开销。P373、学习一种语言的工作就应该集中于把我对该语言而言固有的和自然的风格--而不是去理解该语言的所有语言特征的细枝末节。P39 在实践性的... 阅读全文
posted @ 2012-04-17 21:27 ziyoudefeng 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1、在C++的设计中,极力避免了那些即使不用也会带来运行时间或者空间额外开销的特征。例如:要求必须在每个对象里存储某种“簿记信息”的结构被拒绝了。所以,如果你定义了一种由两个16位的量组成的结构,它将能放进一个32位的寄存器里。P72、模板功能的设计,从根本上说,是为了支持静态类型的容器(如表、向量和映射),以及优雅有效地使用这些容器(通用型程序设计)。P93、给C程序员的建议 P13 [1] 在C++里几乎不需要用宏。用const或enum定义明显的常量,用inline避免函数调用的额外开销,用template去刻画一族函数或者类型,用namespace去避免名字冲突。 [2] 不要在你.. 阅读全文
posted @ 2012-04-17 21:11 ziyoudefeng 阅读(159) 评论(0) 推荐(0) 编辑