重载强制类型转换运算符
1、类型转换运算符
类型转换运算符:在C++中,类型的名字 (包括类的名字) 本身也是一种运算符,即强制类型转换运算符,是单目运算符,只能重载为成员函数,
经过重载后,“(类型名) 对象”,就等价于“对象.operator 类型名( )”
2、重载强制类型转换运算符
重载强制类型转换运算符时,不需要指定返回值类型,因为返回值类型是确定的。
经过适当重载后,“(类型名)对象”这个对对象进行强制类型转换的表达式就等价于“对象operator 类型名 ( )”,即变成对运算符函数的调用。
【示例】
#include<iostream>
using namespace std;
class myComplex
{
double real,imag ;
public:
myComplex(double r=0,double i=0):real(r),imag(i){};
operator double() //重燃制类型转换运第double
{
return real;
}
}
int main()
{
myComplex c(1.2,-3.4);
cout<<(double)c<<end1;
double n=12+c; //汉部相加
cout<<n<<end1;
return 0;
}
【运行结果】
1.2
13.2
3、例题
例题1:[程序填空题]
class myComplex
{
double real,imag;
public:
myComplex (double r=0, double i=0):real (r), imag (i){};
__________(1)____________;
};
_______(2)________operator double () {return real;}
【正确答案】:
(1)operator double()
(2)myCompler ::