我有一段代码,它采用了一个由外部指针和带有链表的内部指针组成的堆栈,但我不知道它是在进行深度复制还是浅层复制。如果我没有足够的信息,对不起,我想这就是你需要告诉的。非常感谢。
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
}
在这种情况下,它只是复制指针,即浅层复制生效。
深度复制意味着不只是复制指针,而是显式地为新指针分配内存,并将传入指针的内容存储到您的代码碰巧丢失的指针中。。。