为什么这种自动存储结构仍然存在
Why does this automatic-storage structure still exist?
代码
stack.h
:
struct customer
{
char fullname[35];
double payment;
};
typedef customer Item;
class Stack
{
private:
...
Item items[MAX];
public:
...
bool push(const Item & item);
bool pop(Item & item);
};
main.cpp
:
#include "stack.h"
...
int main()
{
Stack s; double total;
while (1)
{
...
cin >> c;
switch (c)
{
case '1': push(s);
break;
case '2': pop(s, total);
break;
...
}
}
...
}
void push(Stack & s)
{
Item newitem;
cout << "name -- "; cin >> newitem.fullname;
cout << "payment -- "; cin >> newitem.payment;
s.push(newitem);
}
void pop(Stack & s, double & total)
{
Item olditem;
s.pop(olditem);
total += olditem.payment;
}
备注
main()
的大部分内容可能无关紧要,但我只是想展示一下我在做什么。CCD_ 4和CCD_。
上面的代码应该用Item
s填充堆栈。当弹出Item
时,它的payment
被添加到正在运行的total
中。
同时,用main()
中的函数来区分Stack
方法pop()
和push()
。
困境
代码完全按照我的意愿工作,但我不明白为什么
我在push()
函数中创建了一个本地Item
。它被引用并放置在Stack
上。但是,当push()
功能结束时,这个本地Item
是否应该被删除,因为它在自动存储中?然而,不知何故,它仍然存在,因为当我调用pop()
时,它就在那里。
表达式items[top] = item
使用copy赋值运算符来复制结构。
相关文章:
- 假设传递给 OpenGL 的结构数组的内存布局存在潜在错误
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- cpp 中是否存在一种数据结构,可以轻松地提供一种基于已存在的实例构建新结构的方法
- 如何通过结构中的变量找出结构向量中是否存在结构
- 在C++中传递结构数组 - 被调用函数中不存在结构元素,如何正确传递向量?
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 如何拥有将数组保存在C 中的节点结构
- 在向量中查找值,而向量又存在于结构中
- 结构数据D = {0}和结构数据D = {}之间是否存在任何区别
- 访问结构C++中存在的位集
- 当存在许多相互依赖的项目时,Visual C++中的文件夹结构
- 如何检测在使用tm结构时是否存在闰秒
- 使用VS2008编译的C/C++中存在结构复制问题
- STL中使用引用计数的数据结构存在哪些行为异常
- stl或boost中是否存在用于线程间通信的线程安全结构,其行为类似于队列
- 如何检查变量或结构的成员是否存在
- 有没有办法检查结构中是否存在成员
- 适用于预先存在的类层次结构的函数的最佳模式
- 将结构存储在地图中;检查地图中是否存在结构
- 在c++中,当多态结构不存在时,如何传递它们