C ++の静的メンバー関数とは何ですか?



この記事では、C ++の静的メンバー関数に関する詳細で包括的な知識と例を紹介します。

Staticは、CおよびC ++のキーワードであり、クラスの内外で特別なタイプの変数または関数を宣言するために使用されます。この投稿では、c ++の静的メンバー変数と静的メンバー関数の概念を簡単に理解し、次の順序で通常の変数と関数と比較します。

静的メンバー変数

静的として分類された変数もCの一部です。関数に2つの変数があり、1つは正規変数で、もう1つは静的変数であるとします。正規変数は、関数が呼び出され、そのスコープが制限されたときに作成されます。静的変数は一度作成され、プログラムの最後に破棄されます。これらの変数には、プログラム全体で有効期間があります。





#include using namespace std void Test(){static int x = 1 x = ++ x int y = 1 y = ++ y cout<<'x = '<

出力:

static-member-variables-1



上記の出力から、Test()関数が呼び出されるたびに変数「y」のコピーが作成され、Test()関数が呼び出されるたびに変数「x」の同じコピーが使用されたと結論付けることができます。

最終的に最終的にJavaで終了します

それでは、静的変数の特性について説明しましょう

  1. 静的変数は0に初期化されます。一度だけ初期化されます。



  2. プログラム全体を通して、静的メンバー変数のコピーがクラス全体に対して1つだけ作成されるため、静的メンバー変数はクラス変数とも呼ばれます。クラスのすべてのインスタンスで共有されます。

  3. 静的メンバー変数はクラス内でのみ表示されますが、その存続期間はプログラムが終了するまでです。

クラス内の静的メンバー変数の例を考えてみましょう。

#include using namespace std class Example {static int x public:void function1(){x ++} void function2(){cout<<'x = '<

出力:

上記の出力から、変数「x」がすべてのオブジェクトで共有されていることがわかります。静的データ変数の概念を詳細に理解するために、さまざまな棚に複数の本が置かれている図書館を考えることができます。ライブラリをクラス、特定の本「x」の位置を静的メンバー変数、学生をクラスのオブジェクトと見なします。最初の学生が到着した彼は、別の生徒が到着したときに「x」を新しい位置に配置します。「x」は元の位置に戻りませんが、最初の生徒が離れた場所に残ります。

c ++ソートリスト

C ++の静的メンバー関数

静的メンバー変数と同様に、特定の目的に使用される静的メンバー関数があります。静的メンバー関数を作成するには、関数を宣言するときにstaticキーワードを使用する必要があります。静的メンバー変数はクラスプロパティであり、オブジェクトプロパティではないため、それらにアクセスするには、オブジェクト名の代わりにクラス名を使用する必要があります。

静的メンバー関数のプロパティ:

  1. 静的関数は、同じクラスに存在する他の静的変数または関数にのみアクセスできます

  2. 静的メンバー関数は、クラス名を使用して呼び出されます。構文-class_name :: function_name()

静的メンバー関数の概念を詳細に理解するために、古典的な例を考えてみましょう。この例では、静的メンバー関数に関連するすべての概念を理解します。

#include using namespace stdclass例{staticint Number int n public:void set_n(){n = ++ Number} void show_n(){cout<<'value of n = '<

上記の出力から、変数「n」の値は、クラス「Example」のオブジェクト「example1」と「example2」の両方で異なることがわかります。変数「Number」はクラス変数であるため、その値はオブジェクト「example1」と「example2」の両方で同じです。静的メンバー変数と関数は、共通の値をすべてのオブジェクトで共有する場合に使用されます。プログラミング中は、staticキーワードの使用を賢く行う必要があります。

これで、c ++の静的メンバー関数に関するこの記事は終わりです。詳細を知りたい場合は、 信頼できるオンライン学習会社であるEdurekaによる。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。