【发布时间】:2014-02-13 06:59:42
【问题描述】:
下面是我的复制构造函数的代码,或者更确切地说是我的重载函数,但我的导师称它为复制构造函数:
void operator=(const Stack& s)
{
if (s.top == NULL)
top == NULL;
else
{
top = new Node;
top->link = s.top->link;
Node* newP = top;
for(Node* curr = s.top->link; curr != NULL; curr = curr->link)
{
newP->link = new Node;
newP = newP->link;
newP->data = curr->data;
}
}
}
我希望收到的输入将与我得到的输入一起显示在下面的图像中。
据我了解,NULL 等于 0,所以我想知道我的 s.top 设置为 NULL 是否正在停止成功复制。
【问题讨论】:
-
复制构造函数完全不同,它不会释放以前使用的内存。
-
这就是副本出错的原因吗?
-
您展示的函数不是复制构造函数,而是复制赋值运算符。
-
哦,我希望你的
Node构造函数正确地将link设置为零(即NULL)。 -
第三,
top->link = s.top->link;这行可以去掉。
标签: c++ linked-list stack