-1
class A
{
// constructor,destructors and some getter and setter functions.

friend A& operator+(A& x,A& y);
}

class B
{

vector <A*> A_s;
}

假设这里是A n1*=new A("P");and A n2*=newA("R");( P 和 R 没有特殊含义,我只是写了这表明这两个是不同的对象。之后我想这样做: A final= *n1 +*n2;并且我不想改变 final,如果我改变了 n1 或 n2 (或者反之亦然反之亦然)。有没有办法做到这一点?(我没有复制构造函数,只有默认的复制构造函数)。由于真正的代码真的很长,我试图简化它,对任何不便深表歉意。

4

1 回答 1

2

首先,您的运算符的返回类型可能是错误的。您应该按值返回,因为您要返回一个新对象,它是其他两个对象的总和。此外,您可以按值获取第一个参数并将其用作返回的工作空间。最后,您应该通过 const 引用获取第二个参数,以避免意外改变您的操作数。

friend A operator+(A x, const A& y);

之后,您operator+可以自行决定不要将引用留给您xy并且您想要的事情将自动发生!

于 2013-05-15T17:46:31.263 回答