Part2::Ch 01. 클래스 - 04. 파괴자(Destructor)

2025. 4. 29. 17:44Programming Language/C++

반응형

1. 파괴자란

객체가 소멸될 때 자동으로 호출되는 특수한 함수로 객체가 메모리에서 삭제될 때, 그 전에 해야 할 정리(clean-up) 작업을 담당하는 함수다.

 

2. 파괴자의 기본 형태

~클래스이름();

클래스 명앞에 ~(틸트)를 붙여서 생성하며 반환형도 없고 매개변수도 없으며 딱 하나만 정의할 수 있다.

 

3. 파괴자가 호출되는 시점

파괴자는 지역 변수로 생성된 객체가 스코프를 벗어날 때 delete로 객체를 지울때 프로그램 종료 시점에 자동으로 호출된다.

 

4. 파괴자 호출의 예시

 

파괴자가 꼭 필요한 경우는 멤버 변수를 동적할당해줄 경우엔 반드시 delete로 해제를 해야하기 때문에 

class Car {
private:
    int* speed;
public:
    Car(int s) {
        speed = new int(s);
    }

    ~Car() {
        delete speed;  // new로 할당한 메모리는 반드시 delete 해야 함
    }

    void showSpeed() {
        std::cout << *speed << std::endl;
    }
};

int main() {
    Car myCar(100);
    myCar.showSpeed();
}

이렇게 멤버변수를 포인터로 하여 동적 할당을 받아 값을 사용할때 이 객체가 사라질때 파괴자를 사용해서 동적할당된 모든 메모리를 반환해줘야만 한다.

 

이래야 메모리 누수가 발생하지 않는다.

 

반응형