按值c ++返回一个类?

时间:2013-11-04 04:02:30

标签: c++ pointers memory-management

所以我正在尝试写这个课程。我希望能够做的一件事是将两个加在一起,所以我正在重载加法运算符。但是这里的东西,我不想返回一个指针,我想“按值”返回类,这样加法运算符可以在不搞乱指针的情况下工作。

我当前的方法不起作用,因为我创建的类超出了范围,我能想到的另一种方法是用指针来做。有没有其他方法可以做到这一点,没有调用新的和分配内存,以后将不得不被类的用户删除?

当前代码:

Polynomial operator+(const Polynomial &lhs, const Polynomial &rhs)
{

    Polynomial newPoly;
    newPoly.addWithOther(lhs);
    newPoly.addWithOther(rhs);
    return newPoly;
}

1 个答案:

答案 0 :(得分:-1)

好吧我明白了。调用return后立即调用复制构造函数。返回寄存器将获取您的对象的副本。在这里,任何未返回的对象都将超出范围。如果您没有执行这些对象的深层复制,或者在我的情况下,执行“足够深”的复制,则系统将重新分配成员。