オブジェクト指向での静的な変数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

オブジェクト指向での静的な変数

#1

投稿記事 by spaaaark・∀・ » 11年前

オブジェクト指向において、あるクラスのメンバ関数の中に静的なローカル変数を定義することは、
構造上有効なのでしょうか?
その変数には、スコープを抜ける際に消されたくないデータが入っていて、
1ループごとに1回そのメンバ関数が呼び出されることとします。
クリエイティブな生活で刺激的な毎日を!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向での静的な変数

#2

投稿記事 by softya(ソフト屋) » 11年前

複数のインスタンスを生成した時に矛盾しなければ一応可です。ただ、バグを誘発する可能性は高い気が。
リソースをシングルトンとかで管理はダメなのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: オブジェクト指向での静的な変数

#3

投稿記事 by h2so5 » 11年前

スコープを抜ける際に消されたくないだけなら、メンバ変数でよいと思います。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: オブジェクト指向での静的な変数

#4

投稿記事 by ISLe » 11年前

複数のインスタンスで共有されるしインスタンスの寿命も越えて共有される、ということを理解し想定しているのかどうかが問題だということですね。

アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: オブジェクト指向での静的な変数

#5

投稿記事 by spaaaark・∀・ » 11年前

皆さん返信ありがとうございます。

まとめて返信するような形で申し訳ないのですが、クラスのインスタンスを越えて同じ値を使いたいときは
static変数を、クラスのインスタンスを再生成した際に初期化したい場合はメンバ変数を使う。
というような認識で大丈夫でしょうか?

恥ずかしながらこのような静的変数がインスタンスをも越えることは理解していませんでした。
クリエイティブな生活で刺激的な毎日を!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向での静的な変数

#6

投稿記事 by softya(ソフト屋) » 11年前

> クラスのインスタンスを越えて同じ値を使いたいときはstatic変数を

クラスのメンバ変数でもstaticにすれば同様なことが可能で、そちらのほうがメンテナンス性が高いかと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: オブジェクト指向での静的な変数

#7

投稿記事 by spaaaark・∀・ » 11年前

静的変数を宣言する場所にも良し悪しがあるのですね。
なるほど、参考になりました。ありがとうございました。
クリエイティブな生活で刺激的な毎日を!

閉鎖

“C言語何でも質問掲示板” へ戻る