我的代码是否创建了我的对象的深层或浅层副本?

时间:2014-11-13 05:20:13

标签: c++ pointers linked-list deep-copy

我有这个代码,它接受一个由外部指针组成的堆栈和带有链接列表的内部指针,但我不知道它是否正在制作深度或浅层副本。如果我没有足够的信息,我很抱歉,我认为这是你需要说的。谢谢!

void StackClass::operator =(const StackClass& orig)
{
    //stack = nullptr;
    node* temp = orig.stack;
    if (!orig.IsEmpty())
    {
        while (temp != NULL)
        {
            stack = orig.stack;    // sets thew new stack equal to the old stack's value
            temp = temp->next;
        } // end while loop
    } // end if
    else
    {
        stack = nullptr;          // sets it to an empty list because there's no values
    } // end else
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,它只是复制指针,即浅拷贝生效。

深度复制意味着而不仅仅是复制指针,而是为新指针显式分配内存,并将传入指针的内容存储到代码恰好丢失的内容中......