본문 바로가기

전자 공학/C언어 C++

[C++ 독학하기] 11. 생성자와 소멸자

반응형

안녕하세요. 취업한 공대누나입니다.

지난 시간에는 클래스를 초기화 해주는 생성자에 대해 알아보았는데요.

생성자에 대한 자세한 설명은 아래 포스팅을 참고해주세요.

[C++ 독학하기] 10. 생성자

오늘은 생성자와 소멸자에 대해 알아보도록 하겠습니다.


생성자와 소멸자는 클래스 객체가 생성되거나 소멸될 때 자동으로 호출되는 함수입니다.

객체가 생성되는 시점에는 생성자를 호출하고 소멸되는 시점에는 소멸자를 호출하게 됩니다.

이러한 디폴트 생성자와 소멸자는 우리가 만들지 않아도 컴파일러가 알아서 만들어 넣어줍니다.

한 번 예제를 보도록 하겠습니다.

 

1. 자동으로 호출되는 생성자와 소멸자

왼쪽의 위에 있는 TEST()는 생성자를 ~TEST()는 소멸자를 나타냅니다.

소멸자는 클래스 이름과 같아야 하고 앞에 ~를 붙여야 하는 것을 알 수 있습니다.

오른쪽 그림을 보면 중간에 test1이라는 객체를 생성했습니다.

생성만 할 뿐 다른 어떠한 것도 하지 않았는데 생성자와 소멸자가 호출된 것을 볼 수 있습니다.


2. 명시적 디폴트 생성자

위와 같이 default라는 예약어를 사용해서 별도로 정의하지 않고 선언과 정의를 할 수도 있습니다.

이런 것을 명시적 디폴트 생성자라고 합니다.


3. 동적 개체의 생성과 소멸 (new, delete)

클래스의 인스턴스를 new 연산을 통해서 동적으로 생성할 수 있습니다.

그리고 이렇게 동적으로 생성된 객체는 delete로 삭제해야 합니다.

new의 경우 heap에 메모리를 만들고 그 주소를 리턴해줍니다.

delete의 경우 내가 가리키고 있는 주소의 메모리를 해제해주는 역할을 합니다.

사용하는 방법은 예제를 통해 보도록 하겠습니다.

맨 위에 있던 예제와 결과에서의 차이를 알 수 있으신가요?

동적으로 생성하게 되면 마지막에 END를 출력하기 전에 먼저 소멸되게 됩니다.

 

또한 배열로 객체를 생성했을 경우 반드시 배열로 삭제 해주어야 하는 것도 잊으면 안됩니다.

아래가 바로 배열로 생성하고 배열로 삭제 한 예시입니다.


 

반응형