摘要: 为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。两个常被使用的RAII classes分别是tr1::shared_ptr和auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使它(被复制物)指向null。 阅读全文
posted @ 2010-02-26 15:03 shengjin 阅读(572) 评论(1) 推荐(0) 编辑
摘要: Coping函数应该确保复制“对象内的所有成员变量”及“所有base class成分”。不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放进第三个函数中,并由两个copying函数共同调用。 阅读全文
posted @ 2010-02-01 18:43 shengjin 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 确保当对象自我赋值时operator=有良好行为。其中技术包括比较“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及copy-and-swap。确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,其行为仍然正确。 阅读全文
posted @ 2010-01-31 20:26 shengjin 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 令赋值操作符返回一个reference to *this。 阅读全文
posted @ 2010-01-16 16:38 shengjin 阅读(436) 评论(0) 推荐(1) 编辑
摘要: 在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造和析构函数的那层)。 阅读全文
posted @ 2010-01-12 14:03 shengjin 阅读(587) 评论(0) 推荐(1) 编辑
摘要: 析构函数绝对不要吐出异常。如果一个析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。 阅读全文
posted @ 2010-01-10 17:11 shengjin 阅读(376) 评论(0) 推荐(1) 编辑
摘要: 最大子序列和问题四种时间复杂度的算法代码。 阅读全文
posted @ 2010-01-08 10:40 shengjin 阅读(879) 评论(0) 推荐(0) 编辑
摘要: 多态基类应该声明一个virtual析构函数,如果class带有任何virtual函数,就该拥有一个virtual析构函数。classes设计目的不是作为基类使用,或不是为了具有多态性,就不该声明virtual析构函数。 阅读全文
posted @ 2010-01-03 14:53 shengjin 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 不使用编译器自动生成的函数,该明确拒绝。可将相应成员函数声明为private并且不予实现,使用像Uncopyable这样的base class也是一种做法。 阅读全文
posted @ 2009-12-29 11:28 shengjin 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 编译器暗自为class创建default构造函数、copy构造函数、copy assignment操作函数,以及析构函数。 阅读全文
posted @ 2009-12-23 12:58 shengjin 阅读(360) 评论(0) 推荐(0) 编辑