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;