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

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

旧式转型操作

(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的使用场合一般是,手头有一个基类的指针或引用,但你很确信实际的类型是一个派生类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容