隐式类型转换
2008-12-20 15:28
169 查看
C++本身对内置类型定义了各种隐式的类型转换,这种内置的类型转换在可能导致精度
丢失的情况下编译器会发出警告,但当我们定义自己的类型时,提供各种隐式转换往往
是弊大于利的(至少在我编写过的代码中很少用到).
隐式的类型转换可分为:其它类型到本类型,本类型到其它类型两种.第一种通过单变量
可调用之构造函数进行实现,第一种则通过用户定义之隐式转换函数进行实现.也许在
某些特殊的情况下这种隐式转换是有用的(例如可能的数值类型),但在大多数情况下它
们所带来的便利并不能弥补可能带来的漫长的程序行为错误调试,错误的关闭在于它们的
存在导致程序进行了用户认为不应该出现的行为但编译器却不提供任何错误提示.
一般用于防止这种隐式转换的方法是把构造函数标志为explcit,或者以代理类的方式
避免进行一次以上的隐式类型转换.
参考资料:More Effective C++ (2rd) 第5条
丢失的情况下编译器会发出警告,但当我们定义自己的类型时,提供各种隐式转换往往
是弊大于利的(至少在我编写过的代码中很少用到).
隐式的类型转换可分为:其它类型到本类型,本类型到其它类型两种.第一种通过单变量
可调用之构造函数进行实现,第一种则通过用户定义之隐式转换函数进行实现.也许在
某些特殊的情况下这种隐式转换是有用的(例如可能的数值类型),但在大多数情况下它
们所带来的便利并不能弥补可能带来的漫长的程序行为错误调试,错误的关闭在于它们的
存在导致程序进行了用户认为不应该出现的行为但编译器却不提供任何错误提示.
一般用于防止这种隐式转换的方法是把构造函数标志为explcit,或者以代理类的方式
避免进行一次以上的隐式类型转换.
参考资料:More Effective C++ (2rd) 第5条
相关文章推荐
- 利用operator实现隐式类型转换的简单应用
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL
- c++中的explicit关键字及隐式类型转换
- 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强
- C++ 隐式类型转换与关键字explicit
- C++类型转换分为:隐式类型转换和显式类型转换
- 隐式类型转换与转换操作符operatorT
- 【Scala类型系统】隐式转换与隐式参数
- c++隐式类型转换和explicit
- sizeof()使用请注意类型隐式转换问题
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- Beginning C# Objects从概念到代码——1.10 隐式类型转换和显式类型转换
- 关于C++中的类型转换(隐式转换)
- JavaScript数据类型之隐式类型转换
- PL/SQL中的数据类型隐式转换规则
- more effective c++——Item M30 代理类(三)隐式类型转换与代理类
- C++ 隐式和显式 初始化,类型转换
- C语言隐式类型转换的规则
- C++类型转换分为:隐式类型转换和显式类型转换
- 在使用EF开发时候,遇到 using语句中使用的类型必须可隐式转换为System.IDisposE