读书笔记 Effective C++: 04 设计与声明

摘要: 条款18:让接口容易被正确使用,不易被误用1. 类型安全性 枚举enum并不具备类型安全性,可以当作int型使用,可采用类内static函数方式实现。class Month{public: static Month Jan(){return Month(1);} static Month Feb(){return Month(2);} ... static Month Dec(){return Month(12);}private: explicit Month(int m);};使用类内static函数,而不是static变量,主要是non-local static对象的初始化次... 阅读全文
posted @ 2013-04-25 22:48 LeaGem 阅读(176) 评论(0) 推荐(0)

读书笔记 Effective C++: 03 资源管理

摘要: 条款13:以对象管理资源1. 为防止资源泄露,使用RAII对象。在构造函数中获得资源,在析构函数中释放资源。2. 常常需要在RAII classes中使用boost::shared_ptr,使copy行为比较直观。条款14:在资源管理类中小心copying行为1. 复制RAII对象必须一并复制其所管理的资源。2. RAII class copying行为是:禁止复制,shared_ptr, 深拷贝,转移资源的拥有权。条款15:在资源管理类中提供对原始资源的访问1. APIs往往要求访问原始资源。对原始资源的访问可能经由显示转换或隐式转换,显示转换比较安全,隐式转换对客户比较方便。显示转换,通过 阅读全文
posted @ 2013-04-11 23:42 LeaGem 阅读(154) 评论(0) 推荐(0)

读书笔记 Effective C++: 02 构造析构赋值运算

摘要: 条款05:了解C++默认编写并调用的哪些函数编译器会为class创建:1. default构造函数(前提是:没有定义任何构造函数); 如果已经声明了一个构造函数,编译器就不会再创建default构造函数了;2. 析构函数3. copy构造函数; 对于指针,只拷贝地址,并不会重建内容,所以要注意double free; 下面是一段错误的代码:class TestDoubleFree{public: explicit TestDoubleFree(char c) : pTest(new char(c)) { } ~Test... 阅读全文
posted @ 2013-03-20 22:26 LeaGem 阅读(1288) 评论(0) 推荐(0)

读书笔记 Effective C++: 01 让自己习惯C++

摘要: 条款01:视C++为一个语言联邦C++主要有4个次语言:1. C。内置数据类型,数组,指针。2. Object-Oriented C++。封装,继承,多态。3. Template C++。泛型编程,模板元编程。4. STL。容器,迭代器,算法,仿函数。各个次语言都有自己的规约。条款02:尽量使用const,enum,inline替换#define1. 常量 C:#define PI 3.1415926535 C++:const double PI = 3.1415926535; 相比#define而言,const double具有更小的obj文件。因为const变量放在记号表内,而#de... 阅读全文
posted @ 2013-03-14 23:20 LeaGem 阅读(231) 评论(0) 推荐(0)