C ++ - 返回对象指针时使用复制构造函数?

时间:2015-07-29 21:32:03

标签: c++ pointers constructor

当您的类有指针时,有三个原因可以使用复制构造函数。其中之一是函数返回类类型的值。我在想这是什么意思?我的猜测是。

例如

当我们重载一个运算符时,我们可以返回一个带有类构造函数的对象?

身高(英尺,英寸); //正常构造函数......代表两个私人成员的英尺和英寸

const height operator+ (const height& height1, const height& height2)
{
     int finalFeet = height1.getFeet() + height2.getFeet();
     int finalInches = height1.getInches() + height2.getInches();
     return height(finalFeet, finalInches);
}

所以,我猜测如果私人成员的英尺和英寸是指针,则需要复制构造函数。  而不是构造函数的高度(英尺,英寸);复制构造函数将被调用,如高度(const height& rightHead);我是对的吗?

我刚才意识到的是,如果我们在自己的类中返回一个对象,我们可以说* this,如果它是类外的函数,我们使用构造函数来返回类型。

谢谢!

1 个答案:

答案 0 :(得分:0)

按价值返回时,您将返回一个对象。如果返回对象,则必须创建对象。因此,您必须致电ctor。

在您的示例中,operator+会返回一个新对象,因此不会返回*thisoperator+=修改当前对象,在这种情况下,您可以返回*this