Minwoo Dev.

[C++] 소멸자(Destructor) 본문

C++

[C++] 소멸자(Destructor)

itisminu 2024. 3. 24. 20:48
728x90
반응형
SMALL

소멸자(Destructor)

 

생성자가 객체의 생성과 함께 호출되는 것이었다면 소멸자는 객체의 소멸과 함께 호출되는 함수이다.

 

생성자의 이름이 클래스의 이름과 같아야 했던 것과 똑같이, 소멸자의 이름도 클래스의 이름과 동일해야 한다.

다른 점이라면 앞에"~" 가 붙는다는 것이다.

 

~클래스이름(){
	객체가 소멸될 때 실행할 코드
   }

 

~생성자 이름() 과 같은 형식으로 소멸자를 선언한다.

#include <iostream>
using namespace std;

class Myclass
{
private:
    char *name;
    int score = 0;

public:
    Myclass(char *username, int _score)
    {
        int len = strlen(username) + 1;
        name = new char[len];
        strcpy(name, username);
        score = _score;
    }

    void showInfo()
    {
        cout << "score = " << score << endl;
    }

    ~Myclass() // 소멸자!!
    {
        delete[] name;
        cout << "called destructor!" << endl;
    }
};

int main(void)
{
    Myclass c1("minu", 80);
    c1.showInfo();
    return 0;
}

 

 

위 코드에서는 소멸자를 통해 동적으로 할당된 데이터를 해제해주고 있다.

소멸자가 실행되면, 즉 이 객체가 사용되고 나서 없어질 때 , called destructor! 이 출력될 것이다.

 

결과를 보자.

 

 

showInfo를 사용하여 정보를 출력한 다음에, 할 일이 끝났으므로 소멸자가 실행되는 것을 확인할 수 있다.

 

이처럼 소멸자는 객체의 소멸 과정에서 한번 실행된다.

이러한 특성 때문에 동적 할당된 것을 해제하는 경우에 많이 사용한다.

728x90
반응형
LIST