当您的类有指针时,有三个原因可以使用复制构造函数。其中之一是函数返回类类型的值。我在想这是什么意思?我的猜测是。
例如当我们重载一个运算符时,我们可以返回一个带有类构造函数的对象?
身高(英尺,英寸); //正常构造函数......代表两个私人成员的英尺和英寸
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,如果它是类外的函数,我们使用构造函数来返回类型。
谢谢!
答案 0 :(得分:0)
按价值返回时,您将返回一个对象。如果返回对象,则必须创建对象。因此,您必须致电ctor。
在您的示例中,operator+
会返回一个新对象,因此不会返回*this
。 operator+=
修改当前对象,在这种情况下,您可以返回*this
。