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

C++ C++;-在返回对象指针时使用复制构造函数?,c++,pointers,constructor,C++,Pointers,Constructor,当类有指针时,有三个原因可以解释为什么应该使用复制构造函数。其中之一是当函数返回类类型的值时。我想知道那是什么意思?我猜是的 例如…当我们重载一个操作符时,我们可以返回一个带有类构造函数的对象 高度(英尺、英寸)//普通构造函数…英尺和英寸代表两个私有成员 const height operator+ (const height& height1, const height& height2) { int finalFeet = height1.getFeet() +

当类有指针时,有三个原因可以解释为什么应该使用复制构造函数。其中之一是当函数返回类类型的值时。我想知道那是什么意思?我猜是的

例如…当我们重载一个操作符时,我们可以返回一个带有类构造函数的对象

高度(英尺、英寸)//普通构造函数…英尺和英寸代表两个私有成员

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);
}
所以,我猜如果私有成员英尺和英寸是指针,那么就需要一个复制构造函数。 而不是建造商的高度(英尺、英寸);复制构造函数的调用方式如下:height(const height&righhead);我说得对吗

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


谢谢

按值返回时,返回的是一个对象。如果返回对象,则必须创建对象。因此,您必须调用一个ctor


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

您能澄清您的问题吗?我想你问的是复制构造函数的用途。当你说“有三个原因”时,你指的是哪三个原因?你能链接到这个说法的来源吗,或者列出另外两个原因吗?“我说的对吗?”不,这不是全部的原因。故事是关于类本身在空闲存储上分配的指针,而不是指向调用方的局部变量的指针(您应该完全避免这些)。