Программа по написанию класса комплексных чисел

Рейтинг: 0Ответов: 1Опубликовано: 21.10.2014
using namespace std;

class Complex         // класс "Комплексное число"
{
private:
  double re, im;      // действительная и мнимая части

public:
  // конструкторы

  Complex ()
  {
  };

  Complex (double r)   
  {
    re = r;
    im = 0;
  }

  Complex (double r, double i)
  {
    re = r;
    im = i;
  }

  Complex (const Complex &c)   // конструктор копирования
  {
    re = c.re;
    im = c.im;
  }

  // деструктор
  ~Complex ()
  {
  }

  // остальные функции

  // Модуль комплексного числа
  double abs ()        
  {
    return sqrt (re * re + im * im);
  }

  // оператор присваивания
  Complex& operator = (Complex &c)   
  {
    re = c.re;
    im = c.im;

    return (*this);
  }

  // оператор +=
  Complex& operator += (Complex &c)   
  {
    re += c.re;
    im += c.im;
    return *this;
  }

 }

int
main ()
{
  Complex a (5, 2);
  Complex b (3, -3);

  cout << "a = " << a << "; b =" << b << endl;

  Complex c = a + b;

  cout << c << endl;

  return 0;
}

Скажите, почему в перегрузке мы используем const, что значит указатель на c? Что это с? Поясните, пожалуйста, выделенные участки кода.

Ответы

▲ 2Принят

скажите почему в перегрузке мы используем const,

Такой формат у этой функции для реализации данного оператора. На Вашем этапе лучше просто запомнить форму.

что значит указатель на c.

Там не указатель, а ссылка.

Что это с?

Это просто аргумент. Как у любой другой функции. При желании можно заменить на что то свое.

Код не компилируется, там куча ошибок.

Обновление

А что же там понимать - у класса Complex всего два поля. Чтобы сделать присваивание, достаточно их скопировать. А return (*this) в самом конце - это такая конструкция, чтобы возвратить объект. Вам же чему-то нужно присвоить. :)

Я правильно понимаю: Complex& operator += (Complex &c) - метод не статический, а Complex operator + (const Complex &c) - статический метод?

Во первых, в с++ нет методов. Они называются "функции классов". Если Ваш преподаватель говорит "методы" - принесите ему стандарт с++ - там это слово не встречается.

И обе функции не статические.