ページ 1 / 1
オブジェクト指向での静的な変数
Posted: 2013年12月11日(水) 21:31
by spaaaark・∀・
オブジェクト指向において、あるクラスのメンバ関数の中に静的なローカル変数を定義することは、
構造上有効なのでしょうか?
その変数には、スコープを抜ける際に消されたくないデータが入っていて、
1ループごとに1回そのメンバ関数が呼び出されることとします。
Re: オブジェクト指向での静的な変数
Posted: 2013年12月11日(水) 23:08
by softya(ソフト屋)
複数のインスタンスを生成した時に矛盾しなければ一応可です。ただ、バグを誘発する可能性は高い気が。
リソースをシングルトンとかで管理はダメなのでしょうか?
Re: オブジェクト指向での静的な変数
Posted: 2013年12月12日(木) 11:41
by h2so5
スコープを抜ける際に消されたくないだけなら、メンバ変数でよいと思います。
Re: オブジェクト指向での静的な変数
Posted: 2013年12月12日(木) 18:05
by ISLe
複数のインスタンスで共有されるしインスタンスの寿命も越えて共有される、ということを理解し想定しているのかどうかが問題だということですね。
Re: オブジェクト指向での静的な変数
Posted: 2013年12月14日(土) 10:48
by spaaaark・∀・
皆さん返信ありがとうございます。
まとめて返信するような形で申し訳ないのですが、クラスのインスタンスを越えて同じ値を使いたいときは
static変数を、クラスのインスタンスを再生成した際に初期化したい場合はメンバ変数を使う。
というような認識で大丈夫でしょうか?
恥ずかしながらこのような静的変数がインスタンスをも越えることは理解していませんでした。
Re: オブジェクト指向での静的な変数
Posted: 2013年12月14日(土) 12:49
by softya(ソフト屋)
> クラスのインスタンスを越えて同じ値を使いたいときはstatic変数を
クラスのメンバ変数でもstaticにすれば同様なことが可能で、そちらのほうがメンテナンス性が高いかと思います。
Re: オブジェクト指向での静的な変数
Posted: 2013年12月15日(日) 00:07
by spaaaark・∀・
静的変数を宣言する場所にも良し悪しがあるのですね。
なるほど、参考になりました。ありがとうございました。