정적 멤버
클래스 내 전역 변수나 전역 함수와 동일한 역할을 하는 클래스의 멤버로써
접두어로 static을 붙여서 선언한다.
클래스 자체에 내장되어 있으므로 인스턴스의 선언 없이 호출이 가능하고,
인스턴스의 선언 자체가 필요 없으므로 this를 이용해 참조할 수 없다. (애초에 인스턴스에 있는게 아니니까)
#include <iostream>
class Test
{
public:
Test(int data) : nData(data) {
nCount++;
} // Test 클래스로 인스턴스를 생성하면 nCount가 증가함.
int getData() {
return this->nData;
} // 인스턴스 멤버
static int getCount() {
return nCount; // nData에 접근할 수 없음.
} // 정적 멤버
private:
int nData = 0; // 인스턴스에 존재하는 값
static int nCount; // 클래스에 존재하는 값.
};
int Test::nCount = 0; // 정적 멤버는 정의를 바깥으로 빼야함.
int main()
{
Test a(5), b(10); // 생성자가 2번 호출되었으므로 nCount가 2 증가함.
std::cout << a.getData() << std::endl; // 5
std::cout << b.getCount() << std::endl; // 2
}
'C, C++' 카테고리의 다른 글
C++) 복사 생성자 (1) | 2024.01.24 |
---|---|
C++) 생성자 다중 정의 및 생성자 위임 (0) | 2024.01.23 |
C++) 디폴트 생성자와 카피 생성자(참조자 멤버 초기화) (0) | 2024.01.22 |
C++) 디폴트 생성자(Constructor)와 소멸자 (0) | 2024.01.21 |
C++) 클래스 기본 문법 (0) | 2024.01.21 |