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前面没有参数。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏古时的风筝

Python中的几种数据类型

大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex St...

18610
来自专栏听雨堂

JavaScript大略

 简介: javascript是一种基于对象和事件驱动并具有安全性能的脚本语言。 它是通过嵌入或调入在标准的HTML语言中实现的。 数据类型:   St...

16910
来自专栏coding

redis集合类型详解

1023
来自专栏白驹过隙

Redis - set类型操作

33513
来自专栏前端杂货铺

清除浮动的原理剖析

常用的清除浮动的几种方法总结下:   1,手动设置一个标签(在浮动元素下方),然后对其设置clear属性     2,给浮动元素设置 :after伪类,创建块元...

3369
来自专栏柠檬先生

Python 基础 函数

python 什么是函数   Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。 python 函数的调用   Python内置...

2416
来自专栏知道一点点

bootstrap快速入门笔记(一)

563
来自专栏十月梦想

html元素居中情况分类

内联元素,也叫行内元素(inline):(,a,input,span,b,i,u....)默认不会进行换行,不能设置宽度和高度.

443
来自专栏一“技”之长

Bootstrap响应式前端框架笔记二——排版标签与类

    Bootstrap中对h标签的字体和字号进行了微调,开发者除了可以直接使用这些标签进行标题的修饰外,还可以使用.h1到.h6类来将其他元素的字体进行修饰...

692
来自专栏逻辑熊猫带你玩Python

Python | 6大数据类型方法归纳总结(中)

可以直接使用tuple()创建一个新的元组,或者,使用tuple()将一个对象转换成元组。

854

扫描关注云+社区