반응형
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
설명
- static int count;는 정적 멤버 변수로 선언되어, MyClass의 모든 객체가 count를 공유합니다.
- static void printCount();는 정적 멤버 함수로, 클래스 이름을 통해 MyClass::printCount()와 같이 호출할 수 있습니다.
- int MyClass::count = 0;는 정적 멤버 변수를 클래스 외부에서 정의하고 초기화합니다.
이 예제에서는 객체가 생성될 때마다 count가 증가하고, 정적 멤버 함수를 통해 객체 수를 출력합니다.
반응형
'C_C++' 카테고리의 다른 글
C++, 순수가상함수 Pure Virtual Function (0) | 2024.11.11 |
---|---|
C++, 가상 함수의 특징 Features of Virtual Functions (0) | 2024.11.10 |
C++, 생성자 오버로딩 개요 Constructor Overloading Overview (0) | 2024.10.25 |
C++, 인라인 함수란? What is an inline function? (0) | 2024.10.21 |
C++, 클래스 기초: 자동차 클래스를 상속한 전기차 (0) | 2024.10.20 |