Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 复制构造函数和赋值运算符都会被调用_C++_Constructor_Copy_Variable Assignment_Operator Keyword - Fatal编程技术网

C++ 复制构造函数和赋值运算符都会被调用

C++ 复制构造函数和赋值运算符都会被调用,c++,constructor,copy,variable-assignment,operator-keyword,C++,Constructor,Copy,Variable Assignment,Operator Keyword,我有以下程序片段: Polynomial Polynomial:: add(const Polynomial b) { Polynomial c; c.setRoot(internalAdd(root, c.root)); c.setRoot(internalAdd(b.root, c.root)); return c; } c = (a.add(b)); 据我所知,这段代码假设将a和b相加,然后通过调用复制构造函数将得到的多项式分配给c 然而,当我实际测试它

我有以下程序片段:

Polynomial Polynomial:: add(const Polynomial b)
{
    Polynomial c;
    c.setRoot(internalAdd(root, c.root));
    c.setRoot(internalAdd(b.root, c.root));
    return c;
}

c = (a.add(b));
据我所知,这段代码假设将a和b相加,然后通过调用复制构造函数将得到的多项式分配给c

然而,当我实际测试它时

  • c立即调用复制构造函数并尝试复制b
  • 然后a和b相加
  • 然后,c尝试通过赋值运算符得到结果多项式
  • 然后程序崩溃了
我能做些什么来解决这个问题

Polynomial Polynomial::add(const Polynomial& b)
                                           ^
如果不希望复制参数,请如上所述将其作为引用传入

这可能无法修复您的崩溃-如果没有更多的代码(以及您方面的一些调试来确定它),就无法判断是什么导致了崩溃,但它将消除复制构造多项式参数的需要

如果不希望复制参数,请如上所述将其作为引用传入


这可能无法修复您的崩溃-如果没有更多的代码(以及您方面的一些调试来确定它),无法判断是什么导致了崩溃,但它将消除复制构造多项式参数的需要。

您需要向我们展示复制构造函数和赋值运算符,以检测崩溃的原因。顺便说一句,您看到的行为或多或少是可解释的查找,名为返回值优化(NRVO)?您是否正在尝试编写
多项式::运算符+(const polyman&rhs)const
?您需要向我们展示复制构造函数和赋值运算符,以检测崩溃的原因。顺便说一句,您看到的行为或多或少是可解释的查找,名为返回值优化(NRVO)?您正在尝试编写
多项式::运算符+(常数多项式&rhs)常数