C++ 类的自动转换与强制类型转换
来源:互联网 发布:万科荣华金域名城1号楼 编辑:程序博客网 时间:2024/05/29 15:42
一,从内置数据类型到用户自定义类型的转换
1,下面是自定义的Time类
class Time{private: int intVal; double doubleVal;public: Time(int val):intVal(val){} Time(double val):doubleVal(val){}};int main(){ int val = 10; Time obj(5); obj = val; return 0;}
程序分析:
在C++中,接收一个参数的构造函数为将该参数类型的值转换为自定义的类型提供了蓝图。因此,在上面的构造函数中,可以将int、double类型转换为Time类型。
2,可以将构造函数用作自动类型转换,但是这样做也会导致意外的类型转换。因此,C++提供了explicit关键字用于关闭这种特性。使用explicit关键字关闭了上面的自动类型转换,但仍然允许强制类型转换。
class Time{private: int intVal; double doubleVal;public: explicit Time(int val):intVal(val){} explicit Time(double val):doubleVal(val){}};int main(){ int val = 10; Time obj(5); obj = val; //不合法 obj = (Time)val; //合法,进行强制类型转换 return 0;}
二,从用户自定义类型到内置类型之间的转换
上面介绍的是从int、double到Time类型的转换,这节要讲的是从Time类型到int、double等内置数据类型的转换。要进行相反的转换,必须使用特殊的C++运算符函数--转换函数,转换函数是用户定义的强制类型转换。
1,转换函数的原型
operator typeName();
2,使用转换函数应注意下面几点
a,转换函数必须是类方法。
b,转换函数不能指定返回类型。
c,转换函数不能有参数。
3,使用类型转换函数
class Time{private: int intVal; double doubleVal;public: Time(int val):intVal(val){} Time(double val):doubleVal(val){} operator int() const{ return intVal; } operator double() const{ return doubleVal; }};int main(){ int val = 10; Time obj(5); val = obj; return 0;}
阅读全文
0 0
- C++:类的自动转换和强制类型转换
- C++ 类的自动转换与强制类型转换
- 自动类型转换 与 强制类型转换
- 自动类型转换与强制类型转换
- 自动类型转换与强制转换
- 类的自动类型转换和强制类型转换
- 类的自动类型转换和强制类型转换
- 类的自动类型转换和强制类型转换
- 类的自动转换和强制类型转换
- 类的自动转换和强制类型转换
- C++类的自动转换和强制类型转换
- 学习C++——类的自动转换和强制类型转换
- 自动与强制类型转换小总结
- java自动类型转换与强制类型转换
- 自动类型转换与强制类型转换(学习)
- 基本语法(22)自动类型转换与强制类型转换
- c++-----强制类型转换
- 【C++】强制类型转换
- Spring Integration channel中使用message-store的例子
- 优酷自动播放代码
- Linux内核源码目录结构
- 修改linux终端命令行颜色
- Oozie4.1编译过程记录
- C++ 类的自动转换与强制类型转换
- LIST_VIEW_和LVITEM用法
- 前端要注意“开发、命名”的模块化
- 线程基础:多任务处理(16)——Fork/Join框架(排序算法性能补充)
- Netty精粹之JAVA NIO开发需要知道的
- MySQL修改密码
- fedora使用命令显示图片
- Linux相关介绍
- maven将hadoop依赖打包成jar,运行jar后报错 java.io.IOException: No FileSystem for scheme