27. Minimize casting
尽量少做转型
旧式转型:
(T)expression // C风格
T(expression) // 函数风格
新式转型:
const_cast(expression)
dynamic_cast(expression)
reinterpret_cast(expression)
static_cast(expression)
const_cast通常被用来将对象的常量性转除(cast away the constness)。它也是唯一有此能力的C+±style转型操作符。
dynamic_cast主要用于执行"安全向下转型"(safe downcasting),也就是来决定某对象是否归属于继承体系中的某个类型。它是唯一不发有就是语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。
reinterpret_cast意图执行低级转换,实际动作及结果可能取决于编译器,这也就表示它不可移植。
static_cast用来强迫隐式转换(implicit conversions)。
旧式转型依旧合法,但新式转型较受欢迎。原因有二:
- 它们容易在代码中被辨识出来。
- 各转型动作的目标越窄化,编译器越可能诊断出错误的运用。
请记住:
- 如果可以,尽量避免转型,特别是在注重效率的代码中避免使用dynamic_cast。如果有个设计需要转型动作,试着发展无需转型的替代设计。
- 如果转型是必要的,试着将它隐藏于某个函数背后。客户随后可以调用该函数,而不需将转型放进他们自己的代码内。
- 宁可使用C+±style(新式)转型,不要使用旧式转型。前者很容器辨识出来,而且也比较有着分门别类的职责。
27. Minimize casting相关推荐
- Effective C++ 读书笔记之Part5.Implementations
26. Postpone variable definitions as long as possible. 总结: 尽可能延后变量定义式的出现.这样做可增加程序的清晰度并改善程序效率. 批注: 纯C ...
- Effective C++之条款27:尽量少做转型动作
声明: 文中内容收集整理自<Effective C++(中文版)第三版>,版权归原书所有. 本内容在作者现有能力的基础上有所删减,另加入部分作者自己的理解,有纰漏之处敬请指正. 条款27: ...
- Effective C++读书笔记 摘自 pandawuwyj的专栏
Effective C++读书笔记(0) Start 声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节. std::size_t numDigits(i ...
- C#的编码规范中文版(www.idesign.net Author: Juval Lowy) 内容
1.命名规范 1. 使用 Pascal casing 定义类型和方法名public class SomeClass{ public SomeMethod(){}}2. 使用 camel casing ...
- Effective C++改善程序与设计的55个具体做法笔记
Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...
- pandas的dataframe节省内存
##############################第1种################################################### [1]代码如下(下面的会损失数 ...
- Effective C++ 改善55个方法
美·Scott Meyers 候捷 电子工业 2011 刚才看到个会议时间有点晚,3.25论文都提交了 谷歌去广告的插件, 最后投了这个会议,刚刚好正合适.我说金钱与时间 ACCUSTOMING YO ...
- 《Effective C++》》阅读笔记
第一章 Accustoming Yourself to C++ 1 View C++ as a federation of language (1). ...
- Lesson 2 - GPU Hardware and Parallel Communication Patterns
目录 1.Welcome to Unit2 2.Communication Patterns 3.Map and Gathre 4.练习:Scatter 5.练习:Stencil 6.Transpos ...
- 凸优化学习笔记:QP及SOCP问题
凸优化学习笔记:QP及SOCP问题 QP问题 定义 是什么 几何意义 QP.QCQP.LP之间的关系 例子 最小二乘及回归问题 多面体间距离 方差定界问题 基于随机费用的线性规划(考虑随机变量的优化问 ...
最新文章
- eclipse设置代码自动保存步骤
- Ubuntu编译安装VASP
- 为博客园博文添加目录的两种方法
- Xcode 6 allows VECTOR image assets… any idea how to use them?
- 你一写长文章就焦虑拖延?
- 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例
- windows 下架设svn服务器
- java只读xml文件头_为了生成只读的接口和xml,并命名结尾为MapperR.java和MapperR.xml...
- shell笔记[转]
- EasyUI笔记(六)数据表格
- android studio for android learning (十二) 查看并获取联系人信息
- 2022最新H5手机微商城运营源码 简约轻量版 对接最新Z支付个人免签接口 带搭建教程
- Nods.js安装配置(windows)
- 《遥远的救世主》遵守客观规律(三)——文化属性
- Lipschitz函数相关
- vue3获取当前页面组件的路由参数信息
- 开源大型网游服务器架构项目
- 日本区块链联盟助推日本区块链发展
- umeditor 字体大小设置无效
- C语言居民小区水电费管理系统[2023-01-09]
热门文章
- Flex4的可视化显示对象
- 面试题总结——JAVA高级工程师
- 《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.7 文本编辑工具vi...
- RMAN深入解析之--内存中的RMAN
- 西班牙打掉一黑客集团 曾千万台肉鸡
- Zabbix Server安装部署
- 3.高性能MySQL --- 服务器性能剖析( 2 )
- 6.Nginx 的 Rewrite 规则
- 40. HTTP 协议(1)
- php中文件上传$_FILES 的错误代码