[c++] 소멸자 오버로딩
C++에서 소멸자를 오버로딩하여 동적 할당된 메모리나 다른 자원을 해제하는 경우가 있을 수 있습니다. 이 글에서는 C++에서 소멸자를 오버로딩하는 방법과 이에 대한 주의점을 살펴보겠습니다.
기본 소멸자
기본적으로 C++ 클래스에는 명시적으로 정의하지 않아도 잘 정의된 디폴트 소멸자가 있습니다. 이 디폴트 소멸자는 객체가 파괴될 때 호출되어 동적으로 할당된 메모리를 해제하거나 다른 정리 작업을 처리합니다.
class MyClass {
public:
// 생성자, 멤버 함수 등
~MyClass() {
// 소멸자 정의
}
};
소멸자 오버로딩
클래스에서 특정한 자원을 동적으로 할당하고 이를 해제할 필요가 있는 경우, 소멸자를 오버로딩하여 이러한 해제 작업을 정의할 수 있습니다. 일반적으로 동적으로 할당된 메모리에 대한 해제 작업을 처리하지만, 파일 핸들을 닫거나 기타 리소스를 정리하는 작업에도 사용될 수 있습니다.
다음은 동적으로 할당된 메모리를 해제하는 예시입니다.
class Resource {
private:
int *ptr;
public:
Resource() {
ptr = new int;
// 메모리 할당
}
~Resource() {
delete ptr;
// 메모리 해제
}
};
주의사항
소멸자를 오버로딩할 때 몇 가지 주의해야 할 점이 있습니다. 첫째로 동적으로 할당된 메모리에 대한 해제는 신중히 처리해야 합니다. 두번째로는 상속 관계에서의 소멸자 오버로딩 시 가상 소멸자의 사용이 필요할 수 있습니다.
요약
C++에서는 소멸자를 오버로딩하여 동적으로 할당된 메모리나 다른 자원을 해제할 수 있습니다. 이를 통해 메모리 누수나 자원 누수를 방지할 수 있으며, 안전한 코드를 작성할 수 있습니다.
참고 자료: https://modoocode.com/143