본문 바로가기
전공공부/C, C++

[C++] 6. C++의 핵심 Class(캡슐화, 생성자 오버로딩, 멤버변수, 멤버함수)

by 아임그류튜 2024. 3. 19.
반응형

클래스는 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;
}

반응형