回 帖 发 新 帖 刷新版面

主题:c++编程;复数运算符重载


下面是代码,运行不出来,请高手帮忙看看!!感激不尽。
题目是对复数运算符的重载


#include <iostream>

using namespace std;

class complex
{
 
 public:
    complex() ;
    complex( float r, float img ) ;
    complex(const complex& another );

   complex operator +( const complex& another );
   
   complex operator -(const complex& another );
   
   complex operator *( const complex& another );

 complex operator /( const complex& another );
 complex operator ++(const complex& another );
 complex operator --(const complex& another );
private:
    float real, image;
 
};

int main()
{
   complex c1( 2, 3 ), c2( 3, 3 );
   complex c4, c5, c6, c7,c8,c9;
   c4 = c1 + c2;
   c5 = c1 - c2;
   c6 = c1*c2;
   c7 = c1/c2;
   c8=c8++;
   c9=c9--;
   cout<<"c4="<<c4
       <<"c5="<<c5
       <<"c6="<<c6
       <<"c7="<<c7
       <<"c8="<<c8
       <<"c9="<<c9;
 return 0;

}
complex::complex() 
    {

    }
complex::complex( float r, float img )
    {
        real = r; image = img;
    }
complex::complex( const complex& another )
   {
      real = another.real;
      image = another.image;
   }

complex::complex operator +( const complex& another )
   {
      return complex( real+ another.real, image + another.image );
   }
   
complex::complex operator -( const complex& another )
   {
      return complex( real- another.real, image - another.image );
   }
   
complex::complex operator *( const complex& another )
   {
    complex prod;
   
  
    prod.real = real*another.real - image*another.image;
    prod.image = real*another.image + image*another.real;
    return prod;

    
   }

complex::complex operator /( const complex& another )
 {
  complex quot;
  float sq = another.real*another.real + another.image*another.image;

  quot.real = (real*another.real + image*another.image)/sq;
  quot.image = (image*another.real - real*another.image)/sq;

  return quot;

 }
complex::complex operator ++(const complex& another)
{
    another.real=1;
    return complex(real+another.real,image);
}
complex::complex operator --(const complex& another)
{
    another.real=1;
    return complex(real-another.real,image);
}

回复列表 (共3个回复)

沙发

complex::complex operator ++(const complex& another)
{
    another.real=1;
    return complex(real+another.real,image);
}
complex::complex operator --(const complex& another)
{
    another.real=1;
    return complex(real-another.real,image);
}

你传递的是常量引用,却在内部修改对象的值??

板凳

楼主的代码我Copy下来 编译的时候太多错误了,除了“雪光风剑”指出的const参数不能修改其值。还有complex::complex operator++(const complex& another);应该是先返回类型,然后是类域操作符::,然后是函数名吧。complex complex::operator++(int),还有一个错误就是,重载操作符++或者--有两种版本,前置版本和后置版本,前置版本是没有参数的,后置版本必须传入一个int类型参数作为哑元。
如果是前置版本:complex complex::operator++()
                complex complex::operator--()
如果是后置版本:complex complex::operator++(int)
                complex complex::operator--(int)

3 楼


那应该怎样弄呢????

我来回复

您尚未登录,请登录后再回复。点此登录或注册