Menu
Coddy logo textTech

클래스 vs 객체

Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 104개 중 6번째.

클래스는 구조를 정의하는 청사진입니다. 객체는 그 청사진으로부터 생성된 구체적인 인스턴스입니다.

클래스 (설계도)

class Car {
public:
    std::string brand;
    int year;
    
    std::string getInfo() {
        return brand + " (" + std::to_string(year) + ")";
    }
};

여러 객체(인스턴스) 생성하기

Car car1;
car1.brand = "Tesla";
car1.year = 2023;

Car car2;
car2.brand = "Honda";
car2.year = 2020;

std::cout << car1.getInfo() << std::endl;  // Tesla (2023)
std::cout << car2.getInfo() << std::endl;  // Honda (2020)

각 객체는 독립적입니다. car1을 변경해도 car2에는 영향을 주지 않습니다. 동일한 클래스에서 여러 객체를 생성할 수 있으며, 각 객체는 자신만의 데이터를 보유합니다.

challenge icon

챌린지

중급

Car 클래스(청사진)를 생성하세요. 프로그램은 이 클래스로부터 각각 고유한 데이터를 가진 두 개의 별도 객체(인스턴스)를 생성합니다:

  • 공개 멤버: brand (string), year (int)
  • getInfo()"<brand> (<year>)"를 반환합니다

치트 시트

클래스는 구조를 정의하는 청사진입니다. 객체는 그 청사진으로부터 생성된 구체적인 인스턴스입니다.

클래스 정의하기:

class Car {
public:
    std::string brand;
    int year;
    
    std::string getInfo() {
        return brand + " (" + std::to_string(year) + ")";
    }
};

클래스로부터 객체 생성하기:

Car car1;
car1.brand = "Tesla";
car1.year = 2023;

Car car2;
car2.brand = "Honda";
car2.year = 2020;

std::cout << car1.getInfo() << std::endl;  // Tesla (2023)
std::cout << car2.getInfo() << std::endl;  // Honda (2020)

각 객체는 독립적이며 자신만의 데이터를 보유합니다. 한 객체를 변경해도 다른 객체에 영향을 주지 않습니다.

직접 해보기

#include <iostream>
#include "Car.h"

int main() {
    std::string brand1, brand2;
    int year1, year2;
    
    std::getline(std::cin, brand1);
    std::cin >> year1;
    std::cin.ignore();
    std::getline(std::cin, brand2);
    std::cin >> year2;
    
    Car car1;
    car1.brand = brand1;
    car1.year = year1;
    
    Car car2;
    car2.brand = brand2;
    car2.year = year2;
    
    std::cout << "Car 1: " << car1.getInfo() << std::endl;
    std::cout << "Car 2: " << car2.getInfo() << std::endl;
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨