C_C++

c++, 정적 멤버 변수와 정적 함수 static member variables and static functions

고니자니 2024. 11. 2. 18:36
반응형

C++에서 클래스의 정적(static) 멤버는 클래스의 모든 객체가 공유하는 변수나 함수입니다. 정적 멤버는 특정 객체가 아닌 클래스 전체에 속하므로, 클래스의 인스턴스화 여부와 관계없이 접근할 수 있습니다. 정적 멤버는 클래스가 로드될 때 생성되고 프로그램이 종료될 때 소멸됩니다.

 

정적 멤버 변수

  • 클래스의 모든 객체가 같은 메모리 위치를 공유하는 변수입니다.
  • 정적 멤버 변수는 클래스 외부에서 초기화가 필요합니다.

정적 멤버 함수

  • 객체 없이 호출할 수 있는 함수입니다.
  • this 포인터를 사용할 수 없으므로, 객체 고유의 멤버에 접근할 수 없습니다.

예제 코드

아래는 정적 멤버 변수와 정적 멤버 함수를 사용하는 간단한 예제입니다.

#include <iostream>
using namespace std;

class MyClass {
public:
    // 정적 멤버 변수 선언
    static int count;

    // 생성자: 객체 생성 시 count 증가
    MyClass() {
        count++;
    }

    // 정적 멤버 함수
    static void printCount() {
        cout << "현재 객체 수: " << count << endl;
    }
};

// 정적 멤버 변수 정의 및 초기화
int MyClass::count = 0;

int main() {
    MyClass obj1;       // 첫 번째 객체 생성
    MyClass::printCount(); // 현재 객체 수: 1

    MyClass obj2;       // 두 번째 객체 생성
    MyClass::printCount(); // 현재 객체 수: 2

    return 0;
}

(Output)

현재 객체 수: 1
현재 객체 수: 2

c++, 정적 멤버 변수와 정적 함수

설명

  1. static int count;는 정적 멤버 변수로 선언되어, MyClass의 모든 객체가 count를 공유합니다.
  2. static void printCount();는 정적 멤버 함수로, 클래스 이름을 통해 MyClass::printCount()와 같이 호출할 수 있습니다.
  3. int MyClass::count = 0;는 정적 멤버 변수를 클래스 외부에서 정의하고 초기화합니다.

이 예제에서는 객체가 생성될 때마다 count가 증가하고, 정적 멤버 함수를 통해 객체 수를 출력합니다.

반응형