Izo*_*eak 3 c++ constructor operator-overloading
我有以下课程:
class CRectangle
{
CRectangle(string color);
CRectangle(CRectangle &origin);
/* Some more code */
};
Run Code Online (Sandbox Code Playgroud)
而这个:
class CPlane
{
/* Some more code */
CRectangle boundingBox();
};
Run Code Online (Sandbox Code Playgroud)
为什么我能做到这一点?:
CRectangle rectangle1;
CRectangle rectangle2=rectangle1;
CRectangle rectangle3(rectangle1); //Copy constructor.
Run Code Online (Sandbox Code Playgroud)
但我不能这样做:
CPlane plane;
CRectangle rectangle4=plane.boundingBox();
CRectangle rectangle5(plane.boundingBox()); //Copy constructor.
Run Code Online (Sandbox Code Playgroud)
如果我需要最后一项工作,我怎么能这样做?我想也许它与运营商有关=但我不确切知道.
编辑:修复复制构造函数.错误仍然存在.
复制构造函数请求编译器的第一个语法,用于无限递归.
它应该是:-
CRectangle(const CRectangle& origin);
Run Code Online (Sandbox Code Playgroud)
其次,两个调用都应该正常工作,因为两者都是复制构造函数的调用.
CRectangle rectangle4=plane.boundingBox();
CRectangle rectangle5(plane.boundingBox());
Run Code Online (Sandbox Code Playgroud)