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