@explorerMind

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

#include <iostream>
using namespace std;

class trash
{
private:
	int x;
	int y;
public:
	

	trash (int ValX = 0, int ValY = 0)
	{
		 x = ValX;
		 y = ValY;
		 cout << "x = " << x << "\ty = " << y << endl;
	}
	
	trash operator + (const trash & other)
	{
		trash temp;
        temp.x = this->x + other.x;
		temp.y = this->y + other.y;

		return temp;
	}

	trash operator - (const trash& other)
	{
		trash temp;
		temp.x = this->x - other.x;
		temp.y = this->y - other.y;

		return temp;
	}

	trash operator * (const trash& other)
	{
		trash temp;
		temp.x = this->x * other.x;
		temp.y = this->y * other.y;

		return temp;
	}

	trash operator / (const trash& other)
	{
		trash temp;
		temp.x = this->x / other.x;
		temp.y = this->y / other.y;

		return temp;
	}
	
	~trash()
	{
		cout << "Its Destructor." << endl;
	}
};


int main() 
{
	setlocale(LC_ALL, "RUS");
	trash a(10, 5);
	trash b(5, 70);
	trash c = a + b;
	return 0;
}

почему при выводе значений х и у выводится что значения переменной с = (0,0)? хотя если смотреть по откладчику видно что все значения присвоились, почему так?

p.s
я только учусь программированию.
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@Acaunt
Смотри у тебя вывод переменных происходит в конструкторе. Поэтому в операторе+ ты создаешь объект с параметрами по умолчанию, которые равны нулю, но после создания уже присваиваешь значения в этот объект.

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

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


Таким образом ты сразу в конструктор помещаешь необходимые значения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы