Skip to content

문제 12 · 인스턴스 멤버와 클래스 멤버

문제 12 [4점]

아래 제시어에 대한 설명을 예시와 함께 서술하시오.

인스턴스 멤버instance member와 클래스 멤버class member, 정적 멤버

풀이 및 해설

인스턴스 멤버는 객체(인스턴스)마다 각각 따로 존재하는 멤버입니다. 객체를 만들 때마다 별도의 저장 공간이 생기며, 객체.멤버로 접근합니다. 한 객체의 인스턴스 멤버를 바꿔도 다른 객체에는 영향이 없습니다.

**클래스 멤버(정적 멤버, static)**는 개별 객체가 아니라 클래스 전체에 하나만 존재하며, 모든 객체가 공유합니다. 객체를 하나도 만들지 않아도 존재하고, 클래스명::멤버로 접근할 수 있습니다. 정적 멤버 변수는 클래스 밖에서 한 번 정의해 주어야 합니다.

cpp
class Counter {
public:
    int id;            // 인스턴스 멤버: 객체마다 별도
    static int total;  // 클래스 멤버: 모든 객체가 공유
    Counter() {
        total++;       // 객체가 생길 때마다 공유값 증가
        id = total;    // 이 객체만의 번호
    }
};
int Counter::total = 0;   // 정적 멤버 정의
  • id(인스턴스 멤버): 객체 a, b, c가 각각 1, 2, 3을 가짐.
  • total(클래스 멤버): 세 객체가 공유하며 3 하나만 존재. Counter::total로도 접근.

정리하면, "각 객체의 상태"는 인스턴스 멤버로, "클래스 전체에서 공통으로 관리할 값(개수·상수 등)"은 클래스 멤버로 둡니다.

👉 실습(C++)에서 확인하기

PDF