Допустим, у нас есть этот класс A:
class A
{
public:
int a;
A(int b)
{
a = b;
}
};
Я хотел бы создать перегрузку +, чтобы я мог использовать его вот так
A a(1),b(2),c(3),&d;
d = a + b + c;
без изменения содержимого каждого объекта. Следующей логичной вещью было бы выделение нового блока памяти каждый раз, как это:
A &operator+ (const A &b)
{
A *c = new A(a+b.a);
return *c;
}
Но это создало бы новую проблему :промежуточные результаты теряются, вызывая утечки памяти. Я мог бы легко решить эту проблему, создав статическую функцию, которая принимает три ссылки на объект A и сохраняет сумму первых двух в третьей, но я готов поспорить, что должен быть какой-то способ заставить + перегрузка происходить так, как Я хочу.
Итак, вопрос :в том, можно ли как-то использовать цепочку перегрузок операторов, которые не изменяют операнды, не вызывая утечек памяти?