(高分)C++.net中如何重载运算符
WeiWY 2006-05-09 02:54:39 如定义一个复数,使用托管的方式对+,-,*,/进行重载,请问该如何做?
原来的方式已经实现,如下:
#include "stdafx.h"
using namespace std;
class complex
{
public:
complex()
{
real=0;
image=0;
}
complex(double r, double i)
{
real = r;
image = i;
}
complex complex::operator-();
complex operator +(const complex &c);
complex operator -(const complex &c);
complex operator *(const complex &c);
complex operator /(const complex &c);
private:
double real, image;
};
complex complex::operator-()
{
return complex(-real,-image);
}
complex complex::operator +(const complex &c)
{
return complex(real + c.real, image + c.image);
}
complex complex::operator -(const complex &c)
{
return complex(real - c.real, image - c.image);
}
complex complex::operator *(const complex &c)
{
return complex(real * c.real - image * c.image, real * c.image + image * c.real);
}
complex complex::operator /(const complex &c)
{
return complex((real * c.real + image + c.image) / (c.real * c.real + c.image * c.image),
(image * c.real - real * c.image) / (c.real * c.real + c.image * c.image));
}
int _tmain(int argc, _TCHAR* argv[])
{
complex c1(2.0, 3.0), c2(4.0, -2.0), c3;
.........
}