1. 作用
类对象转换成另一类型数据
2. 格式
operator 类型名()
{实现转换语句}
3. 注意
- 函数名前不能指定函数类型,函数没有参数
- 函数名是operator double,这点和运算符重载时的规律一致
- 返回值类型,由函数名中指定的类型名来确定(测试不return也行,但只要返回类型必须和指定类型名一致,不然编译报错)
- 只能作为成员函数,因为转换的主体是本类的对象
- 形式和重载运算符类似,只是被重载的是类型名。如重载的是double,double除了原来的含义,获得新含义,将一个类对象转换为double数据,并制定了转换方法
- 转换构造函数和类型转换运算符,有一个共通的功能,需要时系统隐式调用,建立一个无名的临时对象,如下面Demo
- 对类型重载和对运算符重载很像,通常把类型转换函数称为类型转换运算符函数,由于其也是重载函数,也称其为类型转换运算符重载函数(感觉没啥用,先不记)
4. Demo
class A {
public:
double Anum;
string Astring;
A(double, string);
void display();
operator double();
};
A::A(double Anum, string Astring) {
this->Anum = Anum;
this->Astring = Astring;
}
void A::display() {
cout << Anum;
}
A::operator double() {
return Anum;
}
int main() {
A a(3.14,"aa");
double d = 1+a;
cout<<d;
}