C++转换构造函数与类型转换构造函数
时间:2022-05-03
本文章向大家介绍C++转换构造函数与类型转换构造函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
转换构造函数:
转换构造函数的只有一个形参:
1 Student(float s)
2 {
3 score = s;
4 age = 0;
5 }
如果已经在上面定义了构造函数:
1 Student(85); //建立对象c1,由于只有一个参数,调用转换构造函数
如果对“+”进行了重载,那么以下是编译错误的:
1 stu2 = stu1 + 85; //这样编译错误
2 stu2 = stu1 + Student(85); //合法,将85转换为Student类对象
注意:在已定义的相应的转换构造函数情况下, 将运算符“+”函数重载为友元函数,在进行两个复数相加时,可以用交换律;
如果是重载为成员函数的话,那么交换律不适用;
类型转换构造函数:
用转换构造函数可以将一个类型数据转换成类的对象,但不能将一个类的对象转换成一个类型数据;因此我们需要另一种方法来实现这种功能:
C++提供了类型转换函数来解决这种问题:
1 operator float()
2 {
3 return score;
4 }
下面是一个使用类型转换的简单例子:
1 class Student
2 {
3 private:
4 float score;
5 int age;
6 public:
7 Student(void){age = 18; score = 0;}
8 Student(int a, float s){age = a; score = s;}
9 operator float(){return score;}
10 };
11
12 int main()
13 {
14 Student stu1(18, 86), stu2(18, 97.5);
15 float f;
16 f = 6.75 + stu2; //当需要的时候,编译器会自动调用这些函数
17 cout << f << endl;
18 return 0;
19 }
20 /*
21 运行结果:
22 104.25
23 Press any key to continue
24 */
编译器系统发现有对float的重载,因此调用了这个函数;
注意:operator前面没有参数。
- python concurrent.futures
- Deepmind的星际争霸2强化学习教程(1):建立环境与训练模型
- python contextlib 上下文管理器
- Django扩展自定义manage命令
- Elasticsearch分片、副本与路由(shard replica routing)
- EsRejectedExecutionException排错与线程池类型
- python重试(指数退避算法)
- 动手为王 | Oracle 数据库跨版本升级迁移实践
- 日志归档与数据挖掘
- Redis实现分布式锁
- Mybatis分页插件PageHelper的配置和使用方法
- 另类保存微信公众平台历史消息的方法 - 星标消息
- CentOS环境下Docker私有仓库搭建
- spark三种连接join
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android布局之绝对布局AbsoluteLayout详解
- django实现模型字段动态choice的操作
- 详解ASP.NET Core 处理 404 Not Found
- Python AutoCAD 系统设置的实现方法
- Python如何操作office实现自动化及win32com.client的运用
- android Palette调色板使用详解
- python 穷举指定长度的密码例子
- Android 高仿微信朋友圈拍照上传功能
- android的ListView点击item使item展开的做法的实现代码
- Android NavigationView头部设置监听事件
- android如何取得本地通讯录的头像的原图的实现代码
- 取消Android Studio项目与SVN关联的方法
- Android编程实现获取当前系统语言及地区并更改语言的方法
- Android Studio绑定下拉框数据详解
- python中的socket实现ftp客户端和服务器收发文件及md5加密文件