
정적 멤버 배열 초기화
개요
클래스의 모든 객체가 공유하는 정적(static) 멤버 배열을 선언하고 초기화하는 방법에 대해 알아봅니다.
C++ 버전별 주요 키워드 도입 시기
- C++98 이전: 정적 멤버 변수의 개념은 초기 C++부터 존재했습니다. 클래스 외부에서 정의하고 초기화하는 방식이 사용되었습니다.
내용 설명
- 배열이 모든 객체에 대해 동일한 값을 가지며, 각 객체가 별도의 복사본을 가질 필요가 없을 때
static const배열을 사용합니다. static멤버는 클래스 선언 내에서 선언하고, 클래스 외부(일반적으로 소스 파일)에서 정의하고 초기화합니다.static멤버는 특정 객체에 속한 것이 아니라 클래스 자체에 속하며, 해당 클래스의 모든 객체가 공유합니다. 프로그램이 시작될 때 한 번만 생성되고 초기화됩니다.
예제 코드
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#pragma hdrstop
class weekday
{
private:
static const int DPW = 7;
static const int MAX = 10;
static const char day_name[DPW][MAX]; // 선언
public:
void Display(){
cout << day_name[0] << endl;
cout << day_name[1] << endl;
cout << day_name[2] << endl;
cout << day_name[3] << endl;
cout << day_name[4] << endl;
cout << day_name[5] << endl;
cout << day_name[6] << endl;
}
};
// 정의 및 초기화
const char weekday::day_name[DPW][MAX] =
{ "Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday",
"Friday", "Saturday"
};
#pragma argsused
void main()
{
weekday Dir;
weekday DDD;
Dir.Display();
DDD.Display();
getch();
}
실행 결과
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
활용팁
static멤버는 객체를 생성하지 않고도클래스이름::멤버이름형태로 접근할 수 있습니다. (예:weekday::day_name)- 프로그램 전체에서 공유되는 상수 데이터(예: 설정값, 상수 테이블)를 클래스 내에 캡슐화하여 관리하고 싶을 때
static const멤버가 매우 유용합니다.
'개발 > C++ (98,03,11,14,17,20,23)' 카테고리의 다른 글
| Classic C++ : 클래스 멤버 배열 초기화 (1) | 2025.11.16 |
|---|---|
| Classic C++ : 1인수 생성자 (0) | 2025.11.15 |
| Classic C++ : 기본 생성자와 2인수 생성자 (0) | 2025.11.14 |
| Classic C++ : 생성자(constructor)와 소멸자(destructor) (0) | 2025.11.02 |
| Before Classic C++ : 레퍼런스(&)와 포인터(*) (0) | 2025.11.01 |
| Before Classic C++ : struct (1) | 2025.10.31 |
| Before Classic C++ : Preprocessor (0) | 2025.10.30 |
| Before Classic C++ : Bitwise Operators (0) | 2025.10.29 |