Efficient C++ 阅读笔记
技术要点:
- reference 永远没有成为NULL的机会 如果出现 那么请隔离那个写出这种代码的程序员
- 在写程序的时候为了系统的健壮性能,一定要测试 指针的可用性能 但是 reference 就可以不用测试.
{不指向任何对象: pointer
不同时间指向不同对象:pointer
总是会代表某个对象,永远不变心:reference }
- static_cast
() 拥有着和传统 一样
的表现形式 - const_cast 最常用的用途将某一个对象的常量性去除掉
- dynamic_cast 协助你巡航于继承体系之中
- reinterpret_cast 最常用的用途是转换"函数指针" 例如:有一个函数指针返回的是 void 想强制转换 一个函数指针返回 int
funcPtrArray[0] = reinterpret_cast
(&doSomething);
不具有移植性
多态的具体实现方式:父类的指针指向子类
- 不要用多态方式处理数组 因为子类的数组移动的大小和父类完全不一样
- 具体类不要继承自另一个具体类 不太能够上面的犯错
- 对定制的类型转换保持警觉,因为这样容易导致错误
解决方案之一 : 对double的重载转换为另一个函数取代类型转换操作符,asDouble 写一个这个函数
- explicit 解决隐士转换
之二: 代理技术 例如 先把一个int 转换为一个类 然后这个类就不可以隐式转换为另一个类
- 前置效率更高,因为没有创建临时变量,似乎后置的代码是以前置代码为基础的这样效率就差不多了
- 不要重载 && 和 || 因为无法保证"骤死式" 最好也不要重载 ,号操作符号
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》