【发布时间】:2021-05-13 06:39:35
【问题描述】:
我的任务是使用指针数组创建类stack。但是,当我将stack 类型的变量分配给它自己时,堆栈(或数组)的元素就会变成垃圾。下面是代码(字段为array、stack_size 和stack_capacity):
stack& operator= (const stack& old)
{
if (stack_size != old.stack_size) {//array and old.array could be the same
delete[] array;
}
stack_size = old.stack_size;
stack_capacity = old.stack_capacity;
array = new int[stack_capacity];
for (size_t i = 0; i < stack_size; ++i) {
array[i] = old.array[i];
}
return *this;
}
但是,当我跑步时
std::cout << "Peek: " << c.peek() << " Size: " << c.size() << std::endl;
std::cout << c << "\n\n";
输出(分配前)是:
Peek: 300 Size: 6
{ -88, 99, -100, 0, 200, 300 }
分配后 (stk = stk) 是:
Peek: -842150451 Size: 6
{ -842150451, -842150451, -842150451, -842150451, -842150451, -842150451 }
可能是什么问题?有什么我想念的吗?谢谢
【问题讨论】:
-
请发布您的测试代码,因为您可能正在进行初始化而不是赋值。