#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); } ... Это если реализация простая, в общем случае предпочтительно реализовывать + через += для устранения лишнего дублирования кода.
Комментариев нет:
Отправить комментарий