在做一个课程的作业和学习C++的同时,我正在阅读何时使用堆栈分配和动态分配。我知道在很多情况下,使用堆栈分配会更容易,更好。但是我有一个简单的情况,我很困惑。C++循环堆栈分配
比方说你有一个循环:
for(int i = 0; i < 10; i++)
{
MyObject obj(file);
obj.doSomething();
}
现在的问题是,如果对象包含状态,它保持它的状态(保持不变的对象),同时通过反复迭代从1直到10。也许来自Java/C#背景让我走错了路。但我只看到两种解决方法:
- 使用动态内存。
- 不给文件给构造函数,而是给方法
doSomething(file)
,但是如果你有多个方法操作文件对象,这不是很好,例如,doSomethingElse(file)
。
那么你们在这种情况下做了什么,或者你从来没有陷入过这种状况?
更新: 原来我误解了,它按预期工作。检查下面的awnsers!谢谢大家
即使您使用动态内存替换了`MyObject obj(file);`,由于范围原因,您仍然不会保留状态。 – 2011-01-18 22:57:11