C++重载之转换构造函数与类型转换函数

来源:互联网 发布:幸运转盘的php源码 编辑:程序博客网 时间:2024/05/22 23:58

一:转换构造函数:

       在C++中,某些不同类型的数据之间可以自动转换,例如

int I=6;

i= 7.5 + i;

这是隐式类型转换。

也可以提供显示类型转换,比如:

int(89.5);

而转换构造函数可以实现将一个其他类型的数据转换成一个类的对象。

转换构造函数只能由一个形参:

Complex(double r) {real = r;imag =0;}

作用是将double类型的参数r转换成为Complex类的对象,将r作为复数大的实部,虚部为0.

其定义对象时有两种方式:

1,Complex c1(3.5);

2,c1=Complex(3,5);

通常把有一个参数的构造函数作为转换构造函数,而转换构造函数只能有一个参数。


二:类型转换函数

转换构造函数可以实现将一个指定类型的数据转换为类的对象,但是不能反过来将一个类的对象转换成另一类型的数据。而类型转换函数正好

可以解决这个问题。

可以在Complex类中这样定义类型转换函数:

operator double()

{return real;}

函数返回double变量real的值,它的作用是将一个Complex类对象转换成一个double型数据。注意在函数名前面不能指定函数类型,函数没有参数。

类型转换函数只能作为成员函数,因为转换的主体是本类的对象,不能作为友元或者普通函数。

此时程序中的Complex类对象具有双重身份,即是Complex类对象,也可以作为double类型数据。










0 0
原创粉丝点击