0

这个复杂的重载函数有什么问题?

#include<iostream.h>
#include<conio.h>
class complex
{
private:
    float real,imag;
public:
    complex()
    {}
    complex(float r,float i)
    {
        real=r;
        imag=i;
    }
    void display()
    {
        cout<<"the complex is \t"<<real<<"+i."<<imag;
    }
    complex operator * (complex c1,complex c2)
    {
        complex t;
        t.real=c1.real*real-imag*c1.imag;
        t.imag=real*c1.imag+c1.real*imag;
        return(t);
    }
};
void main()
{
    clrscr();
    complex c1(4,-5);
    complex c2(9,-2);
    complex c3;
    c3=c1*c2;
    c3.display();
    getch();
}
4

1 回答 1

0

这里有几个问题:

  1. operator*应该在课堂之外定义(这是一个很好的做法,以支持正确投射之类的东西)。而不是使用realand imag,使用c2.realand c2.imag

  2. 要么让这个函数通过引用返回,要么实现operator=(这个可以在类内部,并且应该只接收 1 个参数 - rhs)。

于 2011-08-21T13:01:21.690 回答