C++面向对象高级编程(下) 第一周

Conversion Function 转换函数

你现在设计一个对象 class A,它可不可以被转为另外一种类型,这就是一种转换。或者是,另外一种类型可不可以转为A。一个是转出去,一个是转进来,这两个方向,我们都要谈。

现在首先谈的是转出去:

C++面向对象高级编程(下) 第一周

 

1、转化函数不可以有参数。转换类型而已,那有什么参数可言。

2、转化函数没有返回类型,返回类型就是operator后面的double。他也没有参数。

3、这种转化函数通常会加上const,因为并没有改变值,如上图黄色的那块函数。不写也不会报错,但是以后的情况有可能会出错。

4、转换函数可以写任何一个type都可以,不一定是基本类型,只要编译器认得就可以。

5、对于上面的调用(C++面向对象高级编程(下) 第一周),编译器会先去找一个有没有“+”重载,重载函数的两个参数里面一个是int型,一个是fraction类型。编译器没找到,所以就看看有没有转换函数,把f转成double型,于是就找到了上图中黄色的函数。

 

任何一个class,只要你认为合理,你都可以写很多个转换函数。

 

未完待续 2018.11.24

 

 

 

 

 

 

 

Conversion Function 转换函数

你现在设计一个对象 class A,它可不可以被转为另外一种类型,这就是一种转换。或者是,另外一种类型可不可以转为A。一个是转出去,一个是转进来,这两个方向,我们都要谈。

现在首先谈的是转出去:

C++面向对象高级编程(下) 第一周

 

1、转化函数不可以有参数。转换类型而已,那有什么参数可言。

2、转化函数没有返回类型,返回类型就是operator后面的double。他也没有参数。

3、这种转化函数通常会加上const,因为并没有改变值,如上图黄色的那块函数。不写也不会报错,但是以后的情况有可能会出错。

4、转换函数可以写任何一个type都可以,不一定是基本类型,只要编译器认得就可以。

5、对于上面的调用(C++面向对象高级编程(下) 第一周),编译器会先去找一个有没有“+”重载,重载函数的两个参数里面一个是int型,一个是fraction类型。编译器没找到,所以就看看有没有转换函数,把f转成double型,于是就找到了上图中黄色的函数。

 

任何一个class,只要你认为合理,你都可以写很多个转换函数。

 

未完待续 2018.11.24