Почему при выводе значений `x` и `y` переменной `c` получается (0, 0), хотя в коде видно, что значения присваиваются? Как это объяснить?
Конструктор присваивания в языках программирования (например, C++, Java, Python) выполняет операцию присваивания значений одной переменной другой переменной. Он не выполняет арифметические операции над значениями переменных. Если при выводе значений переменных `x` и `y` в переменную `c` получается (0, 0), это может быть вызвано тем, что переменные `x` и `y` были инициализированы значением 0, либо они не были корректно присвоены до момента вывода значений `c`. Возможно, при присвоении значений переменных необходимо было использовать конструктор копирования или выполнить другие операции, чтобы значения корректно передавались в переменную `c`. Чтобы исправить эту проблему, необходимо убедиться, что значения переменных `x` и `y` корректно присваиваются до момента вывода значений переменной `c`. Также стоит проверить, что операции присваивания выполняются правильно и используется корректный синтаксис для работы с переменными.
Смотри у тебя вывод переменных происходит в конструкторе. Поэтому в операторе+ ты создаешь объект с параметрами по умолчанию, которые равны нулю, но после создания уже присваиваешь значения в этот объект. <br/> <br/> Ты можешь это лучше увидеть если добавишь одну строку с кодом в оператор+: <br/> <br/> <pre><code class="cpp">trash operator + (const trash & other)
{
trash temp;
temp.x = this->x + other.x;
temp.y = this->y + other.y;
cout << "x = " << temp.x << "\ty = " << temp.y << endl;
return temp;
}</code></pre> <br/> <br/> Эту строку ты можешь добавить и к другим операторам чтобы увидеть результат. <br/> <br/> Либо ещё один вариант как это можно сделать: <br/> <br/> <pre><code class="cpp">trash operator + (const trash & other)
{
return trash(x + other.x, y + other.y);
}</code></pre> <br/> <br/> Таким образом ты сразу в конструктор помещаешь необходимые значения.