语法格式
类型转换函数也没有参数,因为要将当前类的对象转换为其它类型,所以参数不言而喻
operator type(){//TODO:return data;}
示例
将Complex类型转换为double
#include <iostream>using namespace std;//复数类class Complex{public:Complex(): m_real(0.0), m_imag(0.0){ }Complex(double real, double imag): m_real(real), m_imag(imag){ }public:friend ostream & operator<<(ostream &out, Complex &c);friend Complex operator+(const Complex &c1, const Complex &c2);operator double() const { return m_real; } //类型转换函数private:double m_real; //实部double m_imag; //虚部};//重载>>运算符ostream & operator<<(ostream &out, Complex &c){out << c.m_real <<" + "<< c.m_imag <<"i";;return out;}//重载+运算符Complex operator+(const Complex &c1, const Complex &c2){Complex c;c.m_real = c1.m_real + c2.m_real;c.m_imag = c1.m_imag + c2.m_imag;return c;}int main(){Complex c1(24.6, 100);double f = c1; //相当于 double f = Complex::operator double(&c1);cout<<"f = "<<f<<endl;f = 12.5 + c1 + 6; //相当于 f = 12.5 + Complex::operator double(&c1) + 6;cout<<"f = "<<f<<endl;int n = Complex(43.2, 9.3); //先转换为 double,再转换为 intcout<<"n = "<<n<<endl;return 0;}
