假设我们有这个 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 对象引用并将前两个的总和存储在第三个中,但我敢打赌,一定有某种方法可以使 + 重载以这种方式发生我想。
所以问题是:有什么方法可以使用一系列运算符重载,不会修改操作数而不会导致内存泄漏?