读书人

程序有点有关问题麻烦大家看看

发布时间: 2012-04-03 12:38:19 作者: rapoo

程序有点问题,麻烦大家看看
作业题,大家不要鄙视偶,写一个复数类重载除法
#include <iostream>
using namespace std;

class complex
{
public:
complex(double r=0,double i=0);
complex operator /(const complex& num);
getReal();
getImage();
protected:
double _real;
double _image;
};
complex::complex(double r,double i)
{
_real=r;
_image=i;
return;
}

complex complex::operator /(const complex& num)
{
complex temp;
double t=num._real*num._real+num._image*num._image;
temp._real=(_real*num._real+_image*num._image)/t;
temp._image=(_image*num._real-_real*num._image)/t;
return temp;
}
complex::getReal()
{
cout < <_real < <endl;
return _real;
}
complex::getImage()
{
cout < <_image < <endl;
return _image;
}
int main()
{
complex a(2,3),b(3,4),c;
c=a/b;
cout < <c.getReal() < <endl;
cout < <c.getImage() < <endl;
return 0;
}

输出是
0.70
0
0.04
0
怎么c.getReal()和c.getImage()都变成0了,很郁闷

[解决办法]
修改如下:
=======================
#include <iostream>
using namespace std;

class complex
{
public:
complex(double r=0,double i=0);
complex operator /(const complex& num);
double getReal();
double getImage();
protected:
double _real;
double _image;
};
complex::complex(double r,double i)
{
_real=r;
_image=i;
}

complex complex::operator /(const complex& num)
{
complex temp;
double t=num._real*num._real+num._image*num._image;
temp._real=(_real*num._real+_image*num._image)/t;
temp._image=(_image*num._real-_real*num._image)/t;
return temp;
}
double complex::getReal()
{
cout < <_real < <endl;
return _real;
}
double complex::getImage()
{
cout < <_image < <endl;
return _image;
}
int main()
{
complex a(2,3),b(3,4),c;
c=a/b;
cout < <c.getReal() < <endl;
cout < <c.getImage() < <endl;
return 0;
}

读书人网 >C++

热点推荐