Effective C++ Term 28 尽量避免转型操作

2019-05-21  本文已影响0人  vancymoon

转型操作其实是一个没有办法的办法,一般情况下,能不用就不用;如果转型不可避免,也要用最安全的办法进行

旧式转型操作

(T)expression;
T(expression);

这是我们惯用的两种旧式转型方法,比如从int转型到double

新式转型操作

建议全部采用新式转型,抛弃旧式转型

static_cast

static_cast的用法是最简单的,但是要注意一点,它是对参数进行拷贝后再进行操作的,不是在原对象身上进行操作,详情见https://stackoverflow.com/questions/9084835/why-does-static-castthis-to-a-base-class-create-a-temporary-copy

dynamic_cast

作用是安全地由基类 down casting 到派生类

值得指出的是,dynamic_cast的开销可能比较大,在对性能要求比较高的场合,要尤其注意

dynamic_cast的使用场合一般是,手头有一个基类的指针或引用,但你很确信实际的类型是一个派生类

上一篇下一篇

猜你喜欢

热点阅读