정적 메서드는 객체 그 자신(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
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 프로그래밍 방법론 / 함수 객체 Functor (0) | 2023.02.13 |
---|---|
C++ 문법 / 템플릿 (0) | 2023.02.13 |
C++ 표준 라이브러리 / 파일입출력 (0) | 2023.02.13 |
C++ 표준 라이브러리 / istream, ostream에 관한 이모저모 (0) | 2023.02.13 |
C++ / Deep Copy와 Shallow Copy (0) | 2023.02.12 |
댓글