コースの割り当てを行いながらC++を学んでいるときに、スタック割り当てと動的割り当てをいつ使うべきかを読んでいました。私は、多くの場合、スタック割り当てを使う方が簡単で、より良いことを認識しています。しかし、私が困惑している単純な状況があります。C++ループスタック割り当て
あなたはループを持っているとしましょう:
for(int i = 0; i < 10; i++)
{
MyObject obj(file);
obj.doSomething();
}
さて問題は、オブジェクトの状態が含まれている場合は1から10ゴマの反復を反復しながら、それはそれに状態を保持します(同じオブジェクトのまま)ということです。たぶんJava/C#の背景から来て、間違った方向に私を取得します。しかし、私はこれを解決する2つの方法しか見ません:
- ダイナミックメモリの使用。
- ファイルをコンストラクタに渡すのではなく、
doSomething(file)
のメソッドに渡しますが、ファイルオブジェクトを操作するメソッドが複数ある場合は、これはあまり役に立ちません。doSomethingElse(file)
。
あなたはこのような状況で何をするのですか、まったくそのような状況になることはありませんか?
更新: 私は間違っていると分かり、期待通りに動作しています。下の寝台をチェックしてください!ありがとうすべて
「MyObject obj(file);」をダイナミックメモリに置き換えても、スコープのために状態は保持されません。 –