Смотри у тебя вывод переменных происходит в конструкторе. Поэтому в операторе+ ты создаешь объект с параметрами по умолчанию, которые равны нулю, но после создания уже присваиваешь значения в этот объект.
Ты можешь это лучше увидеть если добавишь одну строку с кодом в оператор+:
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);
	}
Таким образом ты сразу в конструктор помещаешь необходимые значения.