본문 바로가기
C++/기본

[C++] 13. 클래스(1)

by 위니밍 2025. 3. 29.
반응형
📌 요약: 클래스 선언 | 생성자 | 소멸자 | 구조체와 클래스 차이 | 멤버 변수/함수 | 접근제한자

🏗️ 클래스 (Class)

클래스는 객체지향 프로그래밍에서 객체를 만들기 위한 설계도입니다.
클래스로부터 만들어진 실제 데이터를 인스턴스(instance)라고 합니다.

✅ 클래스 선언
class 클래스이름 {
    // 멤버 변수
    // 멤버 함수
};
🧠 클래스 예제
class Student1 {
public:
    string name;
    int math;
    int english;
    int science;

    float Average() {
        return (math + english + science) / 3.0f;
    }
};

Average()는 세 과목 평균을 반환하는 멤버 함수입니다.

🆚 구조체와 클래스의 차이

C++에서 struct와 class는 거의 동일하지만, 기본 접근 제한자만 다릅니다.

항목구조체 (struct)클래스 (class)
기본 접근제한자publicprivate
멤버 함수 포함 가능가능가능
생성자/소멸자 정의가능가능
struct Student2 {
    string name;
    int math;
    int english;
    int science;

    float Average() {
        return (math + english + science) / 3.0f;
    }
};

⚙️ 생성자 (Constructor)

생성자는 객체가 생성될 때 자동으로 호출되는 함수이며, 초기화 작업을 수행합니다.
오버로딩을 통해 다양한 초기화 방식도 지원합니다.

class Constructor {
    int value1;
    int value2;
    int value3;

public:
    Constructor() {
        this->value1 = 0;
        this->value2 = 0;
        this->value3 = 0;
    }

    Constructor(int value1) {
        this->value1 = value1;
        this->value2 = 0;
        this->value3 = 0;
    }

    Constructor(int value1, int value2, int value3) {
        this->value1 = value1;
        this->value2 = value2;
        this->value3 = value3;
    }
};

this는 자기 자신을 가리키는 포인터로, 매개변수와 멤버변수 이름이 같을 때 구분에 사용됩니다.

🧹 소멸자 (Destructor)

소멸자는 객체가 소멸될 때 자동으로 호출되며, 동적 메모리 해제 같은 정리 작업을 수행합니다.
virtual 키워드를 사용하면 상속 시에도 안전하게 소멸됩니다.

class Destructor {
    int* ptr;

public:
    Destructor() {
        ptr = new int;
    }

    virtual ~Destructor() {
        delete ptr;
    }
};

🧪 사용 예시 (main)

int main() {
    Constructor c1(1);
    Constructor c2(2, 3, 4);

    return 0;
}
반응형

'C++ > 기본' 카테고리의 다른 글

[C++] 15. 클래스(3)  (0) 2025.03.29
[C++] 14. 클래스(2)  (0) 2025.03.29
[C++] 12. 구조체(3)  (0) 2025.03.29
[C++] 11. 구조체(2)  (0) 2025.03.29
[C++] 10. 구조체(1)  (0) 2025.03.29