关于c++重载的一个问题
定义了一个复数类,如下:
class complex {
public:
complex(double r) : real(r), imag(0) {}
void assign(double r, double i)
{
real = r; imag = i;
}
void print()
{
cout << real << "+" << imag << "i ";
}
operator double ()
{
return (sqrt(real * real + imag * imag));
}
private:
double real, imag;
};
请问,其中的
operator double ()
{
return (sqrt(real * real + imag * imag));
}
为什么这么定义,它的作用是什么呢?如果应用呢? 好像没遇到过这种重载方式。求大神帮忙解答!! 类 C++ 应用 重载
[解决办法]
#include<iostream>
using namespace std;
class Complex {
public:
Complex(double r) : real(r), imag(0) {}
operator double () {
cout << "Invoked" << endl;
return real * real + imag * imag;
}
private:
double real, imag;
};
int main(int argc, char* argv[]) {
Complex c(1.0);
double d = c;
cout << c << endl << d << endl;
return 0;
}