C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での静的メンバーの定義


C ++のクラスの静的メンバーは、staticキーワードを使用して定義できます。クラスのオブジェクトの数に関係なく、メモリには静的クラスメンバーのコピーが1つだけあります。したがって、静的メンバーはすべてのクラスオブジェクトによって共有されます。

静的クラスメンバーは、他の方法で初期化されていない場合、クラスの最初のオブジェクトが作成されるときにゼロに初期化されます。

静的クラスメンバーの定義を示すプログラムは次のとおりです-

#include <iostream>
using namespace std;

class Point{
   int x;
   int y;

   public:
   static int count;

   Point(int x1, int y1){
      x = x1;
      y = y1;

      count++;
   }

   void display(){
      cout<<"The point is ("<<x<<","<<y<<")\n";
   }
};

int Point::count = 0;

int main(void){
   Point p1(10,5);
   Point p2(7,9);
   Point p3(1,2);

   p1.display();
   p2.display();
   p3.display();

   cout<<"\nThe number of objects are: "<<Point::count;

   return 0;
}

上記のプログラムの出力は次のとおりです-

The point is (10,5)
The point is (7,9)
The point is (1,2)

The number of objects are: 3

上記のプログラムを理解しましょう。

クラスPointには、ポイントを構成する2つのデータメンバーxとyがあります。クラスPointで作成されたオブジェクトの数を監視する静的メンバーカウントもあります。コンストラクターPoint()はxとyの値を初期化し、関数display()はそれらの値を表示します。これを示すコードスニペットは次のとおりです-

class Point{
   int x;
   int y;

   public:
   static int count;

   Point(int x1, int y1){
      x = x1;
      y = y1;

      count++;
   }

   void display(){
      cout<<"The point is ("<<x<<","<<y<<")\n";
   }
};

関数main()には、Pointクラスで作成された3つのオブジェクトがあります。次に、関数display()を呼び出して、これらのオブジェクトの値を表示します。次に、countの値が表示されます。これを示すコードスニペットは次のとおりです-

Point p1(10,5);
Point p2(7,9);
Point p3(1,2);

p1.display();
p2.display();
p3.display();

cout<<"\nThe number of objects are: "<<Point::count;

  1. C++の静的ストレージクラス

    静的ストレージクラスは、プログラムがスコープに出入りするたびにローカル変数を作成および破棄するのではなく、プログラムの存続期間中、ローカル変数を存在させ続けるようにコンパイラーに指示します。したがって、ローカル変数を静的にすると、関数呼び出し間で値を維持できます。 静的修飾子は、グローバル変数にも適用できます。これが行われると、その変数のスコープは、それが宣言されているファイルに制限されます。 C ++では、静的がクラスデータメンバーで使用されると、そのメンバーの1つのコピーのみがそのクラスのすべてのオブジェクトによって共有されます。 例 #include <iostream>

  2. C#クラスの静的メンバーとは何ですか?

    staticキーワードを使用して、クラスメンバーを静的として定義できます。クラスのメンバーを静的として宣言すると、クラスのオブジェクトがいくつ作成されても、静的メンバーのコピーは1つだけになります。 キーワードstaticは、クラスにメンバーのインスタンスが1つだけ存在することを意味します。静的変数は、インスタンスを作成せずにクラスを呼び出すことで値を取得できるため、定数の定義に使用されます。静的変数は、メンバー関数またはクラス定義の外部で初期化できます。クラス定義内で静的変数を初期化することもできます。 以下は例です- 例 using System; namespace StaticV