안녕하세요. 취업한 공대누나입니다.
지난 시간에는 클래스를 초기화 해주는 생성자에 대해 알아보았는데요.
생성자에 대한 자세한 설명은 아래 포스팅을 참고해주세요.
오늘은 생성자와 소멸자에 대해 알아보도록 하겠습니다.
생성자와 소멸자는 클래스 객체가 생성되거나 소멸될 때 자동으로 호출되는 함수입니다.
객체가 생성되는 시점에는 생성자를 호출하고 소멸되는 시점에는 소멸자를 호출하게 됩니다.
이러한 디폴트 생성자와 소멸자는 우리가 만들지 않아도 컴파일러가 알아서 만들어 넣어줍니다.
한 번 예제를 보도록 하겠습니다.
1. 자동으로 호출되는 생성자와 소멸자
왼쪽의 위에 있는 TEST()는 생성자를 ~TEST()는 소멸자를 나타냅니다.
즉 소멸자는 클래스 이름과 같아야 하고 앞에 ~를 붙여야 하는 것을 알 수 있습니다.
오른쪽 그림을 보면 중간에 test1이라는 객체를 생성했습니다.
생성만 할 뿐 다른 어떠한 것도 하지 않았는데 생성자와 소멸자가 호출된 것을 볼 수 있습니다.
2. 명시적 디폴트 생성자
위와 같이 default라는 예약어를 사용해서 별도로 정의하지 않고 선언과 정의를 할 수도 있습니다.
이런 것을 명시적 디폴트 생성자라고 합니다.
3. 동적 개체의 생성과 소멸 (new, delete)
클래스의 인스턴스를 new 연산을 통해서 동적으로 생성할 수 있습니다.
그리고 이렇게 동적으로 생성된 객체는 delete로 삭제해야 합니다.
new의 경우 heap에 메모리를 만들고 그 주소를 리턴해줍니다.
delete의 경우 내가 가리키고 있는 주소의 메모리를 해제해주는 역할을 합니다.
사용하는 방법은 예제를 통해 보도록 하겠습니다.
맨 위에 있던 예제와 결과에서의 차이를 알 수 있으신가요?
동적으로 생성하게 되면 마지막에 END를 출력하기 전에 먼저 소멸되게 됩니다.
또한 배열로 객체를 생성했을 경우 반드시 배열로 삭제 해주어야 하는 것도 잊으면 안됩니다.
아래가 바로 배열로 생성하고 배열로 삭제 한 예시입니다.
'전자 공학 > C언어 C++' 카테고리의 다른 글
[C++ 독학하기] 13. 복사 생성자 (1) | 2021.03.22 |
---|---|
[C++ 독학하기] 12. this 포인터 (0) | 2021.03.14 |
[C++ 독학하기] 10. 생성자 (0) | 2021.03.10 |
[C++ 독학하기] 8. 인라인 함수 개념 (0) | 2021.03.04 |
[C++ 독학하기] 7. 함수 다중 정의, 오버로딩 개념 (0) | 2021.03.02 |