2011-09-07 14 views
5

メンバ変数staticを返すメンバ関数もstaticである必要がありますか?例えば静的変数を返すメンバ関数

struct T { 
    static int i; 
    static int getNumber() { 
     return i; 
    } 
}; 

getNumberstaticすべきかどうかを判断しますか?

答えて

7

通常、はいです。

変数がインスタンスごとの状態を持たない場合、関数がそれを返す前に実行する可能性のあるインスタンスごとのロジックはどれですか?

+0

@Ben、私はコメントをしたときに何か考えていました(インスタンスの数を追跡する冗談な方法)...とにかく - 落ち着いたコメント... – Nim

+0

@ニム:私は誰かがそれのような何かをもたらすかもしれないかと思っていた。あなたは怒っていません。しかし、単純なゲッターでこれをやりたいと思うことはまずありません。 –

1

これは必須ではありません。静的変数を返すメンバ関数を書くことができます。あなたは別の方法で行くことはできません(インスタンス変数を返す静的関数を書く)。

静的メンバーを返す場合の例として、クラスが状態変数を保持し、状態に基づいて静的値のいずれかを返す状況を想像してください。これは良いデザインではありませんが、それは完全に想像できないものではありません。

関連する問題