소멸자를 ~Cow() {}와 ~Cow() = default;로 선언했을 때 차이

김민수·2025년 1월 8일

C++

목록 보기
32/68

1. ~Cow() {}

  • 동적 자원(예: 동적 메모리, 파일 핸들) 관리를 직접 구현해야 함
  • 본문 추가가 가능하며, 동적 자원 해제 등 정리 작업에 사용함
  • 사용자 정의 소멸자가 있을 경우, 컴파일러가 생성하는 기본 소멸자보다 약간의 실행 오버헤드가 있을 수 있음


2. ~Cow() = default;

  • 동적 자원이 없을 경우, 컴파일러가 자동으로 기본 소멸자를 구현
  • 본문 추가가 불가능하며, 기본 동작을 유지하고 코드를 간결화해야 할 때 사용함
  • 사용자 정의 코드가 없어 컴파일러 최적화에 유리하며, 최적화된 기본 동작을 사용함


3. 동적 자원 관리가 필요할 때

동적 메모리, 파일 핸들, 소켓 등 정리 작업이 필요하면 ~Cow() {} 방식을 사용해 본문을 구현

class Cow {
public:
    ~Cow() {
        // 동적 메모리 해제 또는 정리 작업 수행
        delete[] dynamic_array;
    }
};


4. 정리 작업이 필요 없을 때

클래스가 단순하거나 동적 자원이 없으면 ~Cow() = default;를 사용해 간결하게 표현

class Cow {
public:
    ~Cow() = default; // 기본 동작 유지
};
profile
안녕하세요

0개의 댓글