Почему конструктор присваивания не выполняет операцию сложения значений двух других переменных и не присваивает результат переменной?

Почему при выводе значений `x` и `y` переменной `c` получается (0, 0), хотя в коде видно, что значения присваиваются? Как это объяснить?
  • 13 апреля 2024 г. 4:19
Ответы на вопрос 2
Конструктор присваивания в языках программирования (например, C++, Java, Python) выполняет операцию присваивания значений одной переменной другой переменной. Он не выполняет арифметические операции над значениями переменных.

Если при выводе значений переменных `x` и `y` в переменную `c` получается (0, 0), это может быть вызвано тем, что переменные `x` и `y` были инициализированы значением 0, либо они не были корректно присвоены до момента вывода значений `c`. Возможно, при присвоении значений переменных необходимо было использовать конструктор копирования или выполнить другие операции, чтобы значения корректно передавались в переменную `c`.

Чтобы исправить эту проблему, необходимо убедиться, что значения переменных `x` и `y` корректно присваиваются до момента вывода значений переменной `c`. Также стоит проверить, что операции присваивания выполняются правильно и используется корректный синтаксис для работы с переменными.
Смотри у тебя вывод переменных происходит в конструкторе. Поэтому в операторе+ ты создаешь объект с параметрами по умолчанию, которые равны нулю, но после создания уже присваиваешь значения в этот объект. 

Ты можешь это лучше увидеть если добавишь одну строку с кодом в оператор+:

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;
	}


Эту строку ты можешь добавить и к другим операторам чтобы увидеть результат.

Либо ещё один вариант как это можно сделать:

trash operator + (const trash & other)
	{
		return trash(x + other.x,  y + other.y);
	}


Таким образом ты сразу в конструктор помещаешь необходимые значения.
Похожие вопросы