C ++中抽象成员和类函数指针的深层复制构造函数

时间:2015-04-15 05:13:43

标签: c++ pointers copy

这是一个家庭作业问题。 有一个纯虚构造函数,假设原始不是null

BST::BST(const BST& original) {

root = original.root;
if (root != nullptr)
{
    root = new Node();
    root->setValue( original.root->getValue() );
    Node* subtree = root;
    Node* temp = original.root;
    while (temp != nullptr)
    {
        subtree = new Node();
        subtree->setLeft(temp->getLeft());
        temp = temp->getLeft();
        subtree = subtree->getLeft();
    }
    temp = original.root;
    while (temp != nullptr)
    {
        subtree = new Node();
        subtree->setRight(temp->getRight());
        temp = temp->getRight();
        subtree = subtree->getLeft();
    }

}
}

//克隆

  BST::VIRTUALBinary* clone() {
  return (new BST(*this)); }

//调用main

VIRTUALBinary* orig = new BST();
VIRTUALBinary* copy = new BST();
copy = orig;

//删除原文,希望在主

中保留副本
delete orig;

副本似乎与原始函数共享相同的值,因为每次删除原始文件时它都会自行删除。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您只是在复制指针。

使用clone方法:

VIRTUALBinary* copy = orig->clone()