条款26:尽可能延后变量定义式的出现时间
- 尽可能延后变量定义式的出现时间,说白了使用的时候在定义。
class a
{
prubilc:
void getValue(){
string str;
.......
str = name;
}
}
应该写在对应地方:
class a
{
prubilc:
void getValue(){
.......
string str = name;
}
}
防止变量提前利用空间。
条款27:尽量少做转型动作
- 如果可以尽量不要去做转型
- 如果要转型,请用c++新转型
下面为c++四种新转型:
条款28:避免返回handles指向对象内部成分
- 避免返回handles(包括reference、指针、迭代器)指向内部对象。遵守这个可以提高增加封装性。
这里不许多少解释了,为了const函数就是const,
条款29:为“异常安全”而努力是值得的
- 异常安全函数即使发生异常也不会泄漏资源或允许任何数据结构破坏。这样的函数分别为三种可能的保证:基本型、强烈型、不抛异常型
下面是对应解析:
通常我们喜欢这样使用互斥mutex
我们应该防止在内存泄漏改写成:
条款30:透彻了解inlining的里里外外
- 将大多数inlining限制在小型、被频繁使用的函数身上。这可使日后的调试过程和二进制升级更加容易。也可以使潜在的代码膨胀问题最小化,使程序速度提升机会最大化
- 不要只因为function templates 出现在头文件,就将他声明为inline.
说白了inline 函数处理一些简单的函数内容非常方便,对于量大的函数请不要使用他们。