【发布时间】:2015-01-10 04:22:46
【问题描述】:
我有这段代码,它采用一个由外部指针和带有链表的内部指针组成的堆栈,但我不知道它是在进行深拷贝还是浅拷贝。如果我没有足够的信息,我很抱歉,我认为这是你需要告诉的。谢谢!
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
}
【问题讨论】:
-
如果
stack只是一个指针,那么它所做的就是复制指针。 -
@JonathanPotter 它只是一个指针,所以我不会做一个深拷贝我会假设
-
代码一团糟。首先,在尝试从
orig复制任何内容之前,它需要delete对象堆栈中的任何现有元素,然后再尝试从orig复制任何内容。要进行深度复制,必须对new进行一些调用(即使通过调用news) 的其他函数间接调用 - 显然,如果stack确实是node*,则这段代码不会做类似的事情。
标签: c++ pointers linked-list deep-copy