史上最简练的effective c++(条款26-31)实现
- 条款26——尽可能延后变量定义式出现的时间
为了避免异常抛出,早声明的变量未使用;
循环中中的定义应该大多数情况下移到循环之前; - 条款27——尽量少做转型动作
const_cast:常量性移除;
dynamic_cast: 向下转型;
reinterpret_cast:低级转型,比如指针转非指针;
static_cast:强迫隐式转换,无法转化const;
如果转型必要,尽量隐藏在函数背后,避免用户不必要的麻烦;
试着用virrtual、重载、代替转型(个人理解); - 条款28——避免返回handles指向的对象内部成分
增加封装性; - 条款29——为异常安全而努力是值得的
基本承诺:异常抛出,程序保持有效状态任何数据结构、对象不败坏;
强烈保证:程序状态不改变;函数只有成功或者失败(copy and swap技术基本实现);
不抛掷保证:不抛出异常;
注意可能抛出异常的操作; - 条款30——彻底了解inclining
小型、频繁使用的函数;
慎用incline;
drived_class的构造函数可能包含众多安全性的代码,不宜incline; - 条款31——将文件间的编译依存关系降至最低
声明的依存性替换定义的依存性;
简单来说就是最基本的头文件声明源文件定义;