发布时间:2013-01-10 20:33:07
inline只是程序员向编译器提出的一个请求,编译器会根据自身的判断来决定是否对目标函数进行inline处理。inline建议只针对短小且调用频繁的函数,最好这个函数不会被频繁修改,否则包含了这个头文件的源文件都需要重新进行编译构建。慎用inline,它给调试带来了困难。......【阅读全文】
发布时间: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接口,这是一个内部私有成员变动,外界不应该感知,引发了不必要的重新编译。 点击(此处)折叠或打开......【阅读全文】