我的代码是在创建对象的深层副本还是浅层副本



我有一段代码,它采用了一个由外部指针和带有链表的内部指针组成的堆栈,但我不知道它是在进行深度复制还是浅层复制。如果我没有足够的信息,对不起,我想这就是你需要告诉的。非常感谢。

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
}

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

深度复制意味着不只是复制指针,而是显式地为新指针分配内存,并将传入指针的内容存储到您的代码碰巧丢失的指针中。。。

相关内容

  • 没有找到相关文章

最新更新