클래스는 C++의 가장 중요한 특성인 객체 지향 프로그래밍의 중요한 개념입니다.
캡슐화, 상속, 다형성 등을 클래스를 통해 구현 가능합니다.
클래스의 코드는 2가지 파일을 통해 작성합니다.
헤더파일(.h): Class의 정의부로 멤버변수 및 멤버함수를 선업합니다.
- Class의 ADT(사용설명서)로 불리웁니다.
소스파일(.cpp): 멤버함수의 정의가 들어가며 외부에 공개되지 않습니다.
멤버변수는 아래 3가지로 분류할 수 있습니다.
private: 외부에 공개하지 않음(멤버변수)
public: 외부에 공개함(멤버함수, 생성자)
protected: 상속할 멤버함수 등
즉, Class는 제품의 설계도이고 Instance(객체)는 생산된 제품이라고 생각하시면 됩니다.
Class의 중요한 특성은 Encapsulation(캡슐화)로 필요한 부분만 숨기고 공개할 수 있습니다.
보통의 경우 멤버변수는 모두 숨기고(private), 멤버함수를 공개(public)합니다.
함수의 오버로딩과 동일하게 사용하는 생성자 오버로딩입니다.
동일하게 매개변수의 차이를 두며 여러 가지의 생성자를 만들 수 있습니다.
간단하게 작성된 클래스 예시입니다.
헤더파일에 멤버변수, 멤버함수를 선언해줍니다.
소스파일에는 헤더파일을 include하고 멤버함수를 정의해줍니다
실제 메인 소스파일에는 클래스의 헤더파일만 추가해주면 클래스를 사용할 수 있습니다.
챗GPT에 요청한 Class 예시입니다.
#include <iostream>
using namespace std;
// 예제 클래스 정의
class Rectangle {
private:
int width;
int height;
public:
// 생성자
Rectangle(int w, int h) {
width = w;
height = h;
}
// 멤버 함수 (메서드)
int area() {
return width * height;
}
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
};
int main() {
// 클래스 인스턴스 생성
Rectangle rect(3, 4);
// 멤버 함수 호출
cout << "사각형의 넓이: " << rect.area() << endl;
// 멤버 함수를 통한 데이터 변경
rect.setWidth(5);
rect.setHeight(6);
cout << "너비를 변경한 후 사각형의 넓이: " << rect.area() << endl;
return 0;
}
'전공공부 > C, C++' 카테고리의 다른 글
[C++] 8. C++ friend keyword, operator overloading (42) | 2024.05.23 |
---|---|
[C++] 7. C++ Class Static Member(static 멤버변수, 멤버함수) (31) | 2024.04.04 |
[C++] 5. 함수의 매개변수 전달(Call by Value, Pointer, Reference) (30) | 2024.03.13 |
[C++] 4. 동적할당(동적 메모리 사용) (28) | 2024.03.11 |
[C++] 3. 함수 오버로딩(Function Overloading) (28) | 2024.03.09 |