尝试重载二叉搜索树分配运算符

时间:2018-11-01 02:32:47

标签: c++ operator-overloading assignment-operator

我正在尝试重载和赋值运算符,但是程序不断崩溃,这是我尝试过的。赋值运算符在238行上超载了。Code寻求任何帮助

1 个答案:

答案 0 :(得分:0)

老实说,您可能很幸运,该错误已显示出来。

BinaryTree *newTree; newTree->insert(0);

创建指向BinaryTree的指针,该指针将不指向任何内容,然后使用->运算符调用取消引用,这会导致c ++中的未定义行为。

假设关于您的函数的所有其他信息都是正确的(包括其他函数的实现),那么正确的方法将是基于您当前的代码(注意该函数返回一个引用):

BinaryTree & BinaryTree::operator=(const BinaryTree &myTree)
{
    this->insert(0);
    this->FillTree(*this, myTree.root);
    return *this;
}

但是,我发现您的代码中很可能还有其他错误,因此您应该听取其他注释者的建议,并首先实现复制构造函数。