Complex类转换为double型
- Complex类,定义类型转换函数:
- operator double( )
- {
- return real;
- }
作用:
- 将一个Complex类对象转换为一个double型数据。
- 其值是Complex类中的数据成员real的值。
类型转换函数的一般形式为:
- operator 类型名( )
- {
- 实现转换的语句
- }
注意:
- 其返回值的类型是由函数名中指定的类型名来确定的。
- 类型转换函数只能作为成员函数,因为转换的主体是本类的对象。
- 不能作为友元函数或普通函数。
补充知识:
- 从函数形式可以看到,它与运算符重载函数相似,都是用关键字operator开头,只是被重载的是类型名。
- double类型经过重载后,获得新的含义(将一个Complex类对象转换为double类型数据,并指定了转换方法)。
- 编译系统不仅能识别原有的double型数据,而且还会把Complex类对象作为double型数据处理。
- 程序中的Complex类对具有双重身份,既是Complex类对象,又可作为double类型数据。
- Complex类对象只有在需要时才进行转换,要根据表达式的上下文来决定。
- 转换构造函数和类型转换运算符有一个共同的功能:
- 当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量)。
- 一定要注意这里是只有在需要的时候,只有在需要的时候才会去调用。
列子:
#include <iostream>
using namespace std;
class Complex
{
public:
Complex()
{
real=0;
imag=0;
}
Complex(double r,double i)
{
real=r;
imag=i;
}
operator double()//定义类型转换函数
{
return real;
}
private:
double real;
double imag;
};
int main()
{
Complex c1(3,4),c2(5,-10),c3;
double d;
d=2.5+c1;//要求将一个double数据与Complex类型相加,先把Compex转换为double型
cout<<d<<endl;
return 0;
}
结果: