#cpp
На этот вопрос уже дан ответ здесь:
Перегрузка оператора “+”
(1 ответ)
Закрыт 2 года назад.
Не могу разобраться с перегрузкой оператора+. Хочу осуществить возможность к объекту
класса (fraction) добавлять число:
fraction fr(1,5);
int x = num;
fraction result;
result = x + fr;
Ответы
Ответ 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 );*/ }Ответ 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); } ... Это если реализация простая, в общем случае предпочтительно реализовывать + через += для устранения лишнего дублирования кода.
Комментариев нет:
Отправить комментарий