클래스 vs 객체 vs 인스턴스

정채은·2025년 6월 10일

C++ 프로그래밍

목록 보기
9/16

1. 클래스(Class)란?

클래스는 객체를 생성하기 위한 청사진(설계도)이다.
멤버 변수(데이터)와 멤버 함수(기능)를 정의한 사용자 정의 타입이다.

class Car {
public:
    string brand;
    int speed;

    void drive() {
        cout << brand << " is driving at " << speed << " km/h." << endl;
    }
};

위 예시는 Car라는 클래스를 정의한 것으로, 브랜드와 속도를 저장하고 운전하는 기능을 포함한다.
하지만 이 시점에서는 아직 메모리에 존재하지 않는다.

2. 객체(Object)란?

객체는 클래스에 기반해 실제 메모리에 생성된 것이다.
클래스를 바탕으로 만들어진 실체로, 변수와 함수들을 사용할 수 있다.

Car myCar;  // Car 클래스의 객체 생성
  • myCar는 Car 클래스에서 생성된 객체이다.
  • 이제 myCar는 brand, speed 등의 멤버에 접근하거나 drive() 같은 함수를 호출할 수 있다.
myCar.brand = "Hyundai";
myCar.speed = 100;
myCar.drive();  // 출력: Hyundai is driving at 100 km/h.

3. 인스턴스(Instance)란?

인스턴스는 객체와 거의 같은 의미이지만, 클래스를 기반으로 생성된 '특정한 하나의 객체'를 강조할 때 사용하는 용어이다.

즉, 인스턴스는 객체의 하위 개념으로 보면 된다.

Car car1;
Car car2;

car1, car2는 모두 Car 클래스의 인스턴스이다.

즉, 하나의 클래스(Car)에서 여러 인스턴스(car1, car2)를 만들 수 있다.

📌 객체 vs 인스턴스?

"객체(object)"와 "인스턴스(instance)"는 거의 같은 의미로 쓰이지만, 약간의 의미 차이가 있다.

"모든 인스턴스는 객체이지만, 모든 객체가 인스턴스는 아니다."

🔍 좀 더 자세히 설명하면:

용어설명
객체(Object)클래스 또는 구조체 등으로부터 생성된 메모리 상의 실체.
일반적으로 "오브젝트"는 넓은 개념.
인스턴스(Instance)특정 클래스에서 생성된 특정 객체를 지칭할 때 사용.
클래스와의 관계를 강조할 때 사용.

✅ 예시

class Car {
public:
    string brand;
    int speed;
};
Car car1;  // Car 클래스의 인스턴스 (== 객체)
Car car2;  // 또 다른 인스턴스

car1은 Car 클래스의 객체이며, 동시에 Car 클래스의 인스턴스이다.

다시 말해, 객체이자 인스턴스이다.

💡 둘의 차이는 언제 드러나나?

1. 문맥에 따라 달라짐

  • 프로그래밍 일반 문맥에서는 보통 객체(object) 라고 부른다.

  • 클래스와의 관계를 강조할 땐 인스턴스(instance) 라고 부른다.

예)
"Car 클래스의 인스턴스를 하나 생성한다." → 클래스와의 관계에 집중
"객체를 생성했다." → 좀 더 일반적인 표현

2. 객체는 더 넓은 개념

예를 들어, 아래처럼 구조체로 만든 것도 객체이다:

struct Point {
    int x, y;
};
Point p1;  // 이건 객체(object)이지만, 인스턴스(instance)라는 말은 잘 안 씀

클래스가 아닌 일반 타입(예: 배열, 구조체, 포인터)로 만든 것도 객체라고 하지만,
"인스턴스"라는 말은 클래스 기반에서만 주로 사용.

✅ 요약 정리

구분객체 (Object)인스턴스 (Instance)
의미메모리에 존재하는 모든 실체특정 클래스 기반으로 만들어진 객체
관계더 넓은 개념객체의 부분집합
사용문맥 일반적인 실체를 지칭할 때클래스 기반임을 강조할 때
profile
누군가에게 추억을 만들어주는 그날까지

0개의 댓글