본문 바로가기
공부정리/c++

파괴자

by stdlib.h 2016. 7. 27.

저번 글에 생성자가 객체 자체의 초기화외에 외부 환경까지 


초기화 하기 때문에 객체가 사라질 떄 반대의 처리를 할 함수도


필요하다.


예를들어 다른 컴퓨텨와 연결했다면, 사라질 때 연결을 끊고 할당된 메모리도


반환해야 한다.


이러한 뒷처리를 하는 함수를 파괴자 라고 한다.


이 역시 객체가 소멸될 때 컴파일러가 자동으로 호출한다.


파괴자의 이름은 클래스 이름 앞에 ~를 붙인 것으로 고정되어 있으며


인수와 리턴 값은 가지지 않는다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
class position
{
private:
    int x;
    int y;
    int *ptr;
public:
    position(int ax = 0int ay = 0)
    {
        x = ax;
        y = ay;
        ptr = NULL;
    }
    ~position()
    {
        if (ptr)
        {
            free(ptr);
        }
        puts("생성자 호출");
    }
    void print()
    {
        printf("%d %d\n", x, y);
    }
};
 
int main(void)
{
    position a(10);
    a.print();
}
 
 
cs

위와 같은 코드에서, ~position() 이 부분이 파괴자이다.


만약 ptr이 동적할당이 되었다면, 그 메모리를 반환하기 위해 free를 사용한다.


이렇듯 객체가 사라지고 난 후의 뒷 처리를 하는 함수를 파괴자라고 한다.

'공부정리 > c++' 카테고리의 다른 글

복사 생성자  (0) 2016.07.27
생성자  (0) 2016.07.27