对隐式转换保持警觉
来源:互联网 发布:为知笔记导出epub 编辑:程序博客网 时间:2024/05/16 09:40
C++自动对内置类型自动进行隐式转换。如int->double,double->char等。对于自己提供的数据类型可以具备更多对隐式转换的控制力。
对于自定义类型C++使用以下两种方式隐式转换:
一 单一参数的构造函数,包括多参数除第一个外全部为默认参数的情况。
class C{public: C(int); C(int, int a = 1);}
处理方式
- 添加explicit,禁用隐式转换
class C{public: explicit C(int); explicit C(int, int a = 1);}
- 使用proxy class ,防止隐式转换
class IntProxy{public: IntProxy(int num); int num(){return num;}private: int num;};class C{public: C(IntProxy); C(IntProxy, IntProxy a = 1);};
二 隐式类型转换操作符。
class C{public: C(); operator bool (); operator double();}
处理方式
添加显示转换的方式,如std::string提供了c_str()来获取C格式的字符串。
class C{public: C(); bool asbool(); double asdouble();}
三 总结
允许编译器执行隐式类型转坏处大于好处,非必要不提供隐式转换。
阅读全文
0 0
- 对隐式转换保持警觉
- 5. 对定制的“类型转换函数”保持警觉
- 5.对定制的“类型转换函数”保持警觉
- 条款五:对自定义的类型转换保持警觉
- 条款5:对定制的“类型转换函数”保持警觉
- 条款五 对定制的[型别转换函数保持警觉]
- 真是该警觉了
- 对值类型装箱拆箱保持不变性,对引用类型不保持(保持相关性)
- 这些习惯很伤肾 要警觉
- Oracle隐式数据类型转换对索引的影响
- 保持你对Java的敏感度
- 整日对电脑怎样保持生命力?
- 对知识时刻保持怀疑的态度
- 如何保持对编程的乐趣
- 对operator的迷惑! 强制类型转换/隐式类型转换
- 保持~
- 避免在sql的where中对字段进行转换(函数转换/操作符转换/隐式转换)------索引会失效从而导致慢查询
- 日本的惊人秘密!!!!国人警觉!
- eclipse+maven+springboot小Demo
- Python 条件判断
- 结构体内存对齐
- 结构体的字节对齐问题
- Vim编辑技巧
- 对隐式转换保持警觉
- Python 循环
- 初识servlet
- Python dict
- java享元模式
- 03.28 linux系统权限
- Unity3D的内存管理机制
- Ubuntu ssh 免密登录
- Unity3D移动端电量与wifi信号的获取