클래스(Class)
C++는 절차적 프로그래밍과 객체지향 프로그래밍(OOP)을 모두 지원하는 다중 패러다임 언어입니다. 그중 클래스(class)는 객체지향 프로그래밍의 핵심 개념으로, 데이터와 관련된 동작을 하나로 묶어 코드의 재사용성과 유지보수성을 크게 향상시킵니다. 클래스를 사용하면 실제 세계의 사물이나 개념을 소프트웨어 안에 자연스럽게 모델링할 수 있으며, 캡슐화, 상속, 다형성과 같은 중요한 OOP 특성을 구현할 수 있습니다.
1. C++ 클래스란?
클래스(class)는 데이터(멤버 변수)와 동작(멤버 함수)를 하나의 사용자 정의 자료형으로 묶은 것입니다. 클래스를 통해 객체(object)를 만들 수 있으며, 이 객체는 클래스에 정의된 구조를 따라 동작합니다.
기본 문법
class 클래스이름 {
public:
// 멤버 변수
int 변수;
// 멤버 함수
void 함수() {
// 함수 내용
}
};
- class 키워드를 사용해 클래스를 정의합니다.
- public, private, protected 키워드를 통해 멤버의 접근 권한을 설정합니다.
2. 클래스의 주요 구성 요소
a. 멤버 변수(Member Variables)
클래스 내부에 정의된 변수들로, 객체의 상태(state)를 저장합니다.
class Car {
public:
string brand;
int year;
};
b. 멤버 함수(Member Functions)
클래스 내부에 정의된 함수들로, 객체의 동작(behavior)을 정의합니다.
class Car {
public:
void startEngine() {
cout << "Engine started!" << endl;
}
};
c. 생성자(Constructor)와 소멸자(Destructor)
- 생성자 : 객체가 생성될 때 자동으로 호출되어 초기화를 담당하는 특별한 함수입니다. 이름은 클래스 이름과 같아야 합니다.
- 소멸자 : 객체가 소멸될 때 호출되며, 리소스 정리 등을 담당합니다. 이름 앞에 ~를 붙입니다.
class Car {
public:
Car() { // 생성자
cout << "Car object created!" << endl;
}
~Car() { // 소멸자
cout << "Car object destroyed!" << endl;
}
};
3. 접근 제어 지시자
C++ 클래스는 데이터 보호를 위해 접근 제어 지시자를 사용합니다.
접근 제어자 | 설명 |
public | 어디서든 접근 가능 |
private | 클래스 내부에서만 접근 가능 |
protected | 클래스 내부 및 상속받은 클래스에서 접근 가능 |
예시
class Car {
private:
int speed;
public:
void setSpeed(int s) {
speed = s;
}
int getSpeed() {
return speed;
}
};
- speed는 private로 선언되어 직접 접근할 수 없지만, public 멤버 함수를 통해 간접적으로 접근할 수 있습니다.
4. 클래스 사용 예제
#include <iostream>
using namespace std;
class Car {
private:
string brand;
int year;
public:
Car(string b, int y) {
brand = b;
year = y;
}
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
int main() {
Car myCar("Toyota", 2020);
myCar.displayInfo();
return 0;
}
출력
Brand: Toyota, Year: 2020
5. 클래스와 객체지향 개념
C++ 클래스는 객체지향의 4대 특징을 구현하는 데 핵심적인 역할을 합니다.
- 캡슐화(Encapsulation) : 데이터와 함수를 하나로 묶고, 외부로부터 보호합니다.
- 상속(Inheritance) : 기존 클래스를 확장해 새로운 클래스를 만들 수 있습니다.
- 다형성(Polymorphism) : 같은 인터페이스로 다양한 구현을 사용할 수 있습니다.
- 추상화(Abstraction) : 복잡한 세부 구현을 숨기고 필요한 부분만 노출합니다.
6. 마무리
C++에서 클래스는 데이터를 구조화하고 동작을 캡슐화하는 기본 단위입니다. 생성자와 소멸자를 통해 객체의 생명주기를 관리할 수 있으며, 접근 제어 지시자로 데이터를 안전하게 보호할 수 있습니다. 클래스를 올바르게 활용하면, 코드의 재사용성과 유지보수성을 크게 높일 수 있으며, 복잡한 프로그램도 구조화된 방식으로 설계할 수 있습니다.
함께 보면 좋은 자료
블로그 글 :
[Class의 상속] 재사용성과 확장성을 높이는 객체지향의 핵심
Class의 상속 C++은 객체지향 언어로서 클래스와 상속 개념을 기반으로 코드의 재사용성, 확장성, 유지보수성을 높일 수 있는 기능을 제공합니다. C++에서 상속을 사용하면, 기존 클래스의 멤버(변
dachaes-devlogs.tistory.com
[Class와 Struct] 클래스와 구조체의 차이
클래스(Class)와 구조체(Struct)C++에서 Class와 Struct는 둘 다 사용자 정의 타입을 만들기 위한 도구입니다. 많은 초보자들이 C++에서 Class와 Struct를 혼용할 수 있다는 사실에 놀라지만, 실제로 이 둘은
dachaes-devlogs.tistory.com
'언어 > C++' 카테고리의 다른 글
[Class와 Struct] 클래스와 구조체의 차이 (0) | 2025.05.06 |
---|---|
[Class의 상속] 재사용성과 확장성을 높이는 객체지향의 핵심 (0) | 2025.05.05 |