Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정적 멤버 정의


C++ 클래스의 정적 멤버는 static 키워드를 사용하여 정의할 수 있습니다. 클래스의 개체 수에 관계없이 메모리에는 정적 클래스 멤버의 복사본이 하나만 있습니다. 따라서 정적 멤버는 모든 클래스 개체에서 공유됩니다.

정적 클래스 멤버는 다른 방법으로 초기화되지 않은 경우 클래스의 첫 번째 개체가 생성될 때 0으로 초기화됩니다.

정적 클래스 멤버의 정의를 보여주는 프로그램은 다음과 같습니다. -

예시

#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;