클래스 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에는 영향을 주지 않습니다. 동일한 클래스에서 여러 객체를 생성할 수 있으며, 각 객체는 자신만의 데이터를 보유합니다.
챌린지
중급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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.