【发布时间】:2011-06-11 10:08:18
【问题描述】:
在为课程分配作业并学习 C++ 时,我正在阅读有关何时使用堆栈分配和动态分配的信息。我知道在很多情况下使用堆栈分配更容易更好。但是有一个简单的情况让我很困惑。
假设你有一个 for 循环:
for(int i = 0; i < 10; i++)
{
MyObject obj(file);
obj.doSomething();
}
现在的问题是,如果对象包含状态,它会在从 1 到 10 进行迭代时保持它的状态(保持相同的对象)。也许来自 Java/C# 背景让我走错了路。但我只看到两种解决方法:
- 使用动态内存。
- 不将文件提供给构造函数,而是提供给方法
doSomething(file),但如果您有多个方法来操作文件对象,例如,这不是很好。doSomethingElse(file).
那么你们在这种情况下会怎么做,或者你根本就不会让自己陷入这种情况?
更新: 原来我误解了,它按预期工作。检查下面的遮阳篷!谢谢大家
【问题讨论】:
-
即使您将
MyObject obj(file);替换为动态内存,由于范围,您仍然不会保留状态。
标签: c++ stack memory-management