본문 바로가기
프로그래밍 언어/C++

C++ 문법 / 정적 메서드와 정적 멤버 변수(static)

by Nighthom 2023. 2. 12.

정적 메서드는 객체 그 자신(this 포인터)에 접근할 수 없다. 즉, 그 객체 인스턴스와는 독립적으로 존재하는 메서드라고 할 수 있다. 

class A {
public:
	A() { total_data_number++; }
    ~A() { total_data_number--; }
    static int getTotalDataNumber() { return total_data_number; };
	
private:
    static int total_data_number = 0;
}

위 소스코드에 정의된 static 메서드 getTotalDataNumber()은 인스턴스가 없이도 접근할 수 있다.

A::getTotalDataNumber();

또한 위 소스 코드에 정의되어 있는 정적 멤버 변수 total_data_number는 해당 클래스의 모든 인스턴스가 공유한다. A 인스턴스를 생성하면 1이 증가하고, A의 인스턴스를 삭제하면 1 감소한다. 

A* a = new A();
std::cout << A::getTotalDataNumber() << endl; 		// 1
delete a;
std::cout << A::getTotalDataNumber() << endl;		// 0

 

 

댓글