Хорошо, я работаю над книгой и пытаюсь научиться перегружать оператор C ++. Я создал класс BigInt, который принимает один int (изначально равный 0) для конструктора. Я перегружен метод + =, и он прекрасно работает в следующем коде:
BigInt x = BigInt(2);
x += x;
x.print( cout );
Код выведет 4. Итак, я работал над перегрузкой глобального оператора +, используя следующий код:
BigInt operator+(const BigInt lhs, const BigInt rhs)
{
BigInt returnValue(lhs);
returnValue += rhs;
return returnValue;
}
Это также хорошо работает для следующего кода:
BigInt x = BigInt(1);
BigInt y = BigInt(5);
BigInt z = x + y;
z.print();
Это распечатывает 6. Однако, когда я пытаюсь выполнить следующий код, он просто не работает. Книга не очень хорошо объясняет и подразумевает, что она должна просто работать.
BigInt x = BigInt(1);
BigInt z = x + 5;
z.print();
Это печатает 1. Я не уверен, почему z равен 1, когда должно быть 6. Я гуглил онлайн и на stackoverflow, но я не смог найти никого другого, у которого была проблема точно такая некоторые были близки, но ответы просто не подходили. Любая помощь очень ценится!