非静的関数は、C++簡単な質問:非静的関数がCで静的変数を変更することができ++
答えて
で静的変数を変更することができますはい、非静的メンバ関数は限り静的データメンバーを変更することができますデータメンバーの可視性により可能になります。
はい、小さなサンプルプログラムの場合はthis exampleを参照してください。
逆に、静的関数は、通常のメンバ変数が通常のメンバ関数と同じように変更することはできません。
はいできます。
「静的メンバー」は、「非インスタンスメンバー」がインスタンスを特徴付ける間にクラスを特徴付ける属性であるかのように考える。
クラスはコンセプトを定義しますが、インスタンスはこのコンセプトの発生です。 灰色の例では、クラスHuman
がコンセプトですが、Andyはインスタンスです。あなたは60億人のうちの1人の人間です。
人間の概念は、すべての人間は手足、頭、目などを持っていると言います。それらはインスタンスフィールドです。すべての人間のインスタンスは、独自の手足、頭、目を持っています...
私は彼/彼女の職業に応じて人間のコンセプトを専門にすることができます。 明らかにコンピュータエンジニアを定義するComputerEngineer
クラスを考えてみましょう。それは修飾子(または属性)を持つように コンピュータエンジニアの任意のインスタンスがヒトであり、まだ手足、頭、目...
ComputerEngineer
クラスを持っているが、しかし、最低賃金を言うようにモデル化することができますカテゴリsindicateに許されるもの。 minimumWage
これは、同じ属性がすべてのクラスインスタンスに共通の値でなければならない状況です。
このminimumWage
はインスタンスメンバーではなく、インスタンスごとに異なる値を持つことはできませんが、それはまだコンセプトに関係しているため、アクセスできることは妥当であることに注意してください。
次の偽のコードは、静的メンバにアクセスするインスタンスメソッドを持っていることの意味で有効です。
class Human
{
protected:
Limb leftArm;
Limb leftLeg;
Limb rightArm;
Limb rightLeg;
};
class ComputerEngineer : public Human
{
protected:
static double _minimumWage;
double _wage;
public:
wage(double w) // non-static member function can only be called by instances.
{
if (w < minimumWage)
throw "You're gonna have trouble with the union!";
_wage = w;
}
minimumWage(double w)
{ _minimumWage = w; }
};
- 1. 静的変数に関する質問
- 2. オブジェクトC静的変数メモリの質問
- 3. 静的変数と関数の問題
- 4. 関数内静的変数と静的クラス変数の比較
- 5. 静的変数を非静的変数に割り当てる
- 6. C#で静的関数内で非静的関数を呼び出すことはできますか?
- 7. 静的メンバー関数が静的専用変数にアクセスするときのリンカーエラー
- 8. C++静的変数。
- 9. Javaの非静的クラスで静的変数を宣言する
- 10. Javaエラー:非静的変数は、ここでは、静的な文脈から
- 11. C++メンバ関数のアクセスプライベート静的変数?
- 12. 非静的変数ファイルパスが静的文脈
- 13. Javaの非静的変数
- 14. 非静的変数は
- 15. 非静的メンバ変数
- 16. 非静的メンバーの静的メンバー関数
- 17. 静的関数内の非静的パラメータ
- 18. 頂点で静的メソッドで非静的変数を使用できますか?
- 19. java:非静的変数を静的コンテキストから参照できないError
- 20. 静的クラス関数内で静的変数をインクリメントできません
- 21. 静的メソッドと静的変数のjava
- 22. Javaの静的メソッドで非静的変数を使用できますか?
- 23. Eclipseで非最終的な静的変数を検索する
- 24. C#と静的クラスと関数についての質問
- 25. クラスの静的関数は、グローバル静的変数にアクセスできますか?
- 26. C#の静的変数
- 27. C++:静的メンバー変数
- 28. アプリワイド静的変数C#コンソールアプリケーション
- 29. 静的変数
- 30. 静的変数
あなたは非静的メンバと同じ構文を使用して、静的メンバを参照することができます。また、class_name :: static_var構文を使用するオプションもあります。 – Ferruccio
@Ferruccio - ありがとう、編集しました。 – justkt
静的メンバ関数は、静的でないメンバ関数と同じ規則で、静的でないデータメンバを修正することができます。*修正するクラスのインスタンスを指定できる場合は、 'some_instance.some_member = some_value'。静的メンバ関数に 'this'はなく、非静的メンバ関数とは異なり、' some_member'という名前は暗黙的に 'this-> some_member'を意味するものではありません。したがって、静的メンバー関数はインスタンスをどこかから取得する必要があります。非静的メンバー関数は便利であり、メンバーの指定方法を簡略化しています。 –