Код: Выделить всё
class Rational
{
int numerator = 0;
int denominator = 0;
public:
// CONSTRUCTORS
Rational(int n, int d);
// OPERATOR OVERLOADING
Rational &operator=(const Rational &r);
const Rational operator+(Rational r);
// GETTERS
const int getNumerator() { return numerator; }
const int getDenominator() { return denominator; }
// SETTERS
void setNumerator(int n) { numerator = n; }
void setDenominator(int d) { denominator = d; }
};
Код: Выделить всё
const Rational Rational::operator+(Rational r)
{
int newDen = 0;
int newNum = 0;
if (denominator == r.getDenominator())
{
newDen = denominator;
newNum = numerator + r.getNumerator();
}
else
{
// MAKE DENONIATOR THE SAME
newDen = denominator * r.getDenominator();
// MULTIPLY THEN ADD NUMERATORS
newNum = (numerator * r.getDenominator()) + (r.getNumerator() * denominator);
}
// SIMPLIFY
// RETURN A NEW RATIONAL
return simplify(Rational{newNum, newDen});
}
Возможно, я слишком много читаю об этом, но мне бы хотелось разработать лучшие практики C++ сейчас, пока я учусь, чтобы мне не приходилось изо всех сил пытаться от вредных привычек избавьтесь позже.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/790 ... ators-in-c