1. 소멸자를 별도로 지정하지 않아도 되는 경우
컴파일러가 제공하는 기본 소멸자는 아래와 같은 조건에서 충분히 동작합니다:
기본 소멸자의 동작
- 멤버 변수가 **기본 데이터 타입(예: int, double 등)**이거나 **표준 라이브러리 객체(예: std::string, std::vector 등)**인 경우.
- 객체의 메모리를 자동으로 관리할 수 있는 경우.
예제: 소멸자를 별도로 지정하지 않아도 되는 상황
- int와 std::string은 기본 소멸자가 알아서 정리합니다.
- 동적 메모리를 사용하지 않으므로, 특별한 소멸자 정의가 필요 없습니다.
2. 소멸자를 반드시 지정해야 하는 경우
사용자가 동적 메모리 관리 또는 리소스 관리를 직접 수행해야 하는 경우에는 반드시 소멸자를 정의해야 합니다.
소멸자를 꼭 정의해야 하는 상황
- 동적 메모리 할당(new/delete):
- 클래스가 new로 동적 메모리를 할당받는다면, 소멸자에서 반드시 delete로 해제해야 메모리 누수를 방지할 수 있습니다.
- 파일, 네트워크, 데이터베이스 연결 등 외부 리소스 관리:
- 파일 핸들러를 닫거나, 네트워크 연결을 종료하거나, 데이터베이스 연결을 정리하는 경우.
- 자체적으로 관리해야 하는 포인터:
- 클래스가 원시 포인터를 멤버로 포함하고 있다면, 소멸자에서 적절히 정리해야 합니다.
예제: 동적 메모리를 사용하는 경우

- 여기서 data는 new로 동적 메모리를 할당받았기 때문에, 소멸자에서 delete[]를 사용해 반드시 해제해야 합니다.
- 소멸자를 작성하지 않으면 **메모리 누수(memory leak)**가 발생합니다.


Person클래스의 생성자를 호출하는방법이 없기때문에 자식클래스에서 n의 값을 지정할때 생성자를 호출해야함
상속시 액세스지어
class Dog : private Animal{ } 이면 private 생략가능
b는 파생클래스 내부에서는 자유롭게사용할수있지만 int main() 에서는 외부라서 사용못함
final로 선언된 클래스
이름은폐
: : 라는 표시가있으면 전역에서 찾으라는말
'수업 > C++' 카테고리의 다른 글
12강 추상클래스, 상세클래스 (0) | 2024.11.28 |
---|---|
11. 상속- 가상함수(virtual),업캐스팅,다운캐스팅 (1) | 2024.11.28 |
연산자다중정의- 이동대입연산자 , std::move, 형변환연산자 (0) | 2024.11.26 |
8,9연산자 다중정의 (0) | 2024.11.25 |
7.클래스와 객체 -임시객체,묵시적형변환,위임생성자 ,초기화리스트생성자 (0) | 2024.11.25 |