发布时间:2013-01-10 18:26:47
使用异常的情况下,一定要力求异常安全代码,避免任何的资源泄漏,悬垂指针一类的风险。异常不太好控制,短木板理论,异常安全性取决于调用栈异常安全性最弱的那个函数。GOOGLE的C++ Guide Style 里禁用异常。......【阅读全文】
发布时间:2013-01-10 17:59:07
避免返回handle(pointer,ref,iterator)指向对象的内部成员,破坏了对象的封装性。当此对象已经不存在或被销毁后,这个handle变为悬垂(dangling handle),增加了使用风险。一定要返回内部成分时,注意严格控制(改写)权限,严控非const接口,包括返回值的const性.......【阅读全文】
发布时间:2013-01-10 16:04:27
尽量少使用(强制)类型转换。特别是dynamic_cast,效率很低。如果非要转换,也请使用c++中那四个cast,而不是c中的那种风格。使用处提供封装,避免到处都是转换的(字面)代码。......【阅读全文】
发布时间:2013-01-08 18:28:54
提供swap接口以便于交换两个对象,中间不要抛出异常。提到了Pimpl,pointer to implementation,一种经常使用到的实现模式,减少耦合,减少由于头文件变动引发的不必要的重编译。wiki上说的挺清楚:http://en.wikibooks.org/wiki/C++_Programming/Idioms有一个Book类,由于变动,新加入了m_Title成员。其对应的Book.h肯定要修改,那么对应包含了Book.h的所有文件都需要重新编译,即使关于Book对象他们只知道print接口,这是一个内部私有成员变动,外界不应该感知,引发了不必要的重新编译。 点击(此处)折叠或打开......【阅读全文】
发布时间:2013-01-08 11:36:08
不要讲将所有参数都(可能)需要(隐式)转换的函数(重点应该是重载的四则运算符)声明为成员,即将他们在类外。以重载的乘法运算符为例,先将其声明在类内,因为有绑定的this指针,所以只带一个参数rhs。 点击(此处)折叠或打开class Rational {public: Rational(int numerator = 0, // ctor is deliberately not expl int denominator = 1);......【阅读全文】