Перегрузка оператора [дубликат]

231
22 февраля 2017, 21:48

На данный вопрос уже ответили:

  • Перегрузка оператора “+” 1 ответ

Не могу разобраться с перегрузкой оператора+. Хочу осуществить возможность к объекту класса (fraction) добавлять число:

fraction fr(1,5);
int x = num;
fraction result;
result = x + fr;
Answer 1

Текущий инстанс:

fraction& operator+=(int value)
{
    this->... += value;
    return *this;
}

Новый инстанс:

fraction operator+(int value) const
{
    return fraction(...);
}
friend fraction operator+(int value, fraction const& f)
{
    return fraction( value + f./*someoneDataMember*/);
   /* return ( f + value );*/
}
Answer 2

Примерно так:

class fraction{
   int value_;
public:
   fraction(int v): value_{v}
   { }
   const fraction& operator += (int lhs){
      value_ += lhs;
      return *this;
   }
   fraction operator + (int lhs) const{
      fraction tmp(value_);
      tmp += lhs;
      return tmp;
   }
}

Можно немного проще:

...
fraction operator + (int lhs) const{
  return fraction (value_ + lhs);
}
...

Это если реализация простая, в общем случае предпочтительно реализовывать + через += для устранения лишнего дублирования кода.

READ ALSO
Подключение dll, св-ва проекта

Подключение dll, св-ва проекта

Подключаю dll к проекту в MSVS посредством LoadLibrary, те

255
Считывание строки с новой строки

Считывание строки с новой строки

Как можно считать в первой строке число, а во второй строку? getline видимо начинает считывать с символа \n

222
Проверка файла на корректность

Проверка файла на корректность

На вход программе подается два файлаОдин имеет вид:

249
Создать несколько потоков в Qt

Создать несколько потоков в Qt

В Qt есть аналогичный способ создания нескольких потоков?

277