摘要: 1. 设计优秀的class是一项艰巨的任务,因为设计好的types是一项艰巨的工作,好的types有自然的语法,直观的语义,以及一个或多个高效实现品.2. 要设计一个良好的class,需要思考以下问题: 1). 新types对象应该如何被创建和销毁? 涉及到构造函数,析构函数,内存分配和释放... 阅读全文
posted @ 2015-08-23 17:20 Reasno 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 1. 好的借口很容易被正确使用,不易被误用.2. "促进正确使用"的方法包括借口的一致性(例如STL容器用于统计大小的函数都名为size)以及与内置类型的行为兼容(例如重载*返回的值应加const限定以防被篡改).3. 阻止误用的办法包括建立新类型,限制类型上的操作,束缚对象值(使用枚举,stati... 阅读全文
posted @ 2015-08-23 16:34 Reasno 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 1. 有些智能指针类(比如shared_ptr)不支持隐式类型转换,假设存在这样两个函数:void fun(shared_ptr lhs,int rhs);int foo();View Code那么对于以下函数调用:fun(new int,foo());将不能通过编译,解决方法之一:fun(shar... 阅读全文
posted @ 2015-08-23 15:28 Reasno 阅读(213) 评论(0) 推荐(0) 编辑
摘要: (参考自 http://www.cnblogs.com/hazir/p/new_and_delete.html)1. new和delete不是函数,是C++的关键字.2. new一个对象的实际操作分为两步:1). 调用标准库函数operator new分配内存 2)调用构造函数初始化(如果new的是... 阅读全文
posted @ 2015-08-23 11:27 Reasno 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1. 有时资源管理类(resource-managing classes)需要提供对资源的直接访问,这就需要将RAII class对象转换为其内含的原始资源,有两种做法可以达成目标:显式转换和隐式转换.2. 显式转换:shared_ptr和auto_ptr都提供一个get成员函数,用来执行显式转换,... 阅读全文
posted @ 2015-08-23 09:53 Reasno 阅读(208) 评论(0) 推荐(0) 编辑