gpt4 book ai didi

c++ - 为什么会这样? operator= 和复制构造函数

转载 作者:太空狗 更新时间:2023-10-29 20:03:37 27 4
gpt4 key购买 nike

我有以下类(class):

class CRectangle
{
CRectangle(string color);
CRectangle(CRectangle &origin);
/* Some more code */
};

还有这个:

class CPlane
{
/* Some more code */
CRectangle boundingBox();
};

为什么我可以做到这一点? :

CRectangle rectangle1;
CRectangle rectangle2=rectangle1;
CRectangle rectangle3(rectangle1); //Copy constructor.

但是我不能这样做:

CPlane plane;
CRectangle rectangle4=plane.boundingBox();
CRectangle rectangle5(plane.boundingBox()); //Copy constructor.

如果我需要最后一个工作,我该怎么做?我想这可能与 operator = 有关,但我不太清楚。

编辑:修复复制构造函数。错误仍然存​​在。

最佳答案

复制构造函数的第一个语法要求编译器进行无限递归。

应该是:-

CRectangle(const CRectangle& origin);

其次,这两个调用都应该正常工作,因为它们都是对复制构造函数的调用。

CRectangle rectangle4=plane.boundingBox();
CRectangle rectangle5(plane.boundingBox());

关于c++ - 为什么会这样? operator= 和复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460627/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com