More Effective C++: 06杂项讨论】的更多相关文章

32:在未来时态下发展程序 世事永远在变,好的软件对于变化有良好的适应能力:可以容纳新的性质,可以移植到新的平台,可以适应新的需求,可以掌握新的输入.所谓在未来时态下设计程序,就是接受“事情总会改变”的事实,并准备应因之道. 要做到这件事情,办法之一就是以C++本身(而非只是注释或说明文件)来表现各种规范.比如,如果某个类在设计时绝不打算成为基类,那么就不应该只是在头文件的类定义上端摆一行注释就好,而是应该以C++语法来阻止派生的发生:如果一个类要求其所有对象实体都必须于heap内产生,那么应该…
条款53 : 不要轻忽编译器的警告 请记住: 1. 严肃对待编译器发出的警告信息.努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉. 2. 不要过度倚赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同.一旦移植到另一个编译器上,你原本倚赖的警告信息有可能消失.  条款54 : 让自己熟悉包括TR1在内的标准程序库 TR1代表“Technical Report 1”,TR1宣示了一个新版C++的来临,我们可能称之为Standard C++1.1.不熟悉TR1机能而却奢望成…
32:确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public继承表示的是"is-a"(是一种)的关系. 如果令class D以public形式继承class B,你便是告诉编译器说,每一个类型为D的对象同时也是一个类型为B的对象,但是反之不成立.你主张“B对象可派上用场的任何地方,D对象一样可以派上用场”,因为每一个D对象都是一种B对象. 具体到代码上,任何函数如果期望获得一个类型为B(或pointer-to-B或reference-to…
NOTE Nulling out object references should be the exception rather than the norm. Another common source of memory leaks is caches. Once you put an object reference into a cache, it's easy to forget that it's there and leave it in the cache long after…
这节讲了下如何防止对象拷贝(隐藏并不能被其他人调用) 两种方法: 1. 将拷贝构造函数声明为private 并且声明函数但不进行定义 #include <iostream> #include <cstdlib> class Dummy { public: Dummy() : data(d) {} Dummy* getCopy() { Dummy* x = new Dummy(*this); return x; } private: int data; Dummy(const Dum…
http://www.cnblogs.com/fanzhidongyzby/archive/2012/11/18/2775603.html 1.让自己习惯C++ 条款01:视C++为一个语言联邦 条款02:尽量以const,enum,inline替换#define 条款03:尽可能使用const 条款04:确定对象被使用前已先被初始化 2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 条款06:若不想使用编译器自动成生的函数,就该明确拒绝 条款07:为多态基类声明Virtua…
百度云及其他网盘下载地址:点我 编辑推荐 <Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)>前两个版本抓住了全世界无数程序员的目光.原因十分明显:Scott Meyers极富实践意义的C++研讨方式,描述出专家用以产出干净.正确.高效代码的经验法则和行事法则——也就是他们几乎总是做或不做的某些事.<Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)>一共组织55个准则,每一条准则描述一个编写出更好的C++的…
第一部分 让自己习惯C++ 条款01:视C++为一个语言联邦 一.要点 ■ c++高效编程守则视状况而变化,取决于你使用c++的哪一部分. 二.扩展 将c++视为一个由相关语言组成的联邦而非单一语言会帮助你更好的理解,其由c.object-oriented c++.template c++和stl四部分组成. 条款02:尽量以const,enum,inline替换#defines 一.要点 ■ 对于单纯变量,最好以const对象或enums替换#defines. ■ 对于形似函数的宏,最好改用i…
Effective C++算是看完了,但是并没有完全理解,也做不到记住所有,在此记录下55个条款及条款末的"请记住". 让自己习惯C++ 条款01:视C++为一个语言联邦 ① C ② Object-Oriented C++ ③ Template C++ ④ STL 条款02:尽量以const,enum,inline替换#define ① 对于单纯常量,最好以const对象或enums替换#define ② 对于形似函数的宏,最好改用inline函数替换#define 条款03:尽可能使…
1.让自己习惯C++ 条款01:视C++为一个语言联邦 C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 条款02:尽量以const.enum.inline替换 #define 对于单纯常量,最好以const对象或enum替换#define 对于形似函数的宏,最好改用inline函数替换#define 条款03:尽可能使用const 将某些东西声明为const可帮助编译器侦测出错误用法.const可被施加于任何作用域内的对象.函数参数.函数返回类型.成员函数本体. 编译器强制实施b…