소멸자

sz L·2023년 3월 24일
1

C++

목록 보기
16/40
post-thumbnail

소멸자

객체생성시 반드시 호출되는 것이 생성자라면, 객체소멸시 반드시 호출되는 것이 소멸자이다

  • 클래스의 이름 앞에 '~'가 붙은 형태의 이름을 갖는다
  • 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다
  • 매개변수는 void형으로 선언되어야 하기 때문에 오버로딩도, 디폴트 값 설정도 불가능하다
class AAA
{

}

위와같은 클래스 정의는 아래의 클래스 정의와 100% 동일하다

class AAA
{
public:
	AAA() { }
    ~AAA() { }
}
#include <iostream>
#include <cstring>
using namespace std;

class Person
{
private:
	char* name;
	int age;
public:
	Person(char* myname, int myage)
	{
		int len = strlen(myname) + 1;
		name = new char[len];
		strcpy(name, myname);
		age = myage;
	}
	void showPersonInfo() const
	{
		cout << "이름: " << name << endl;
		cout << "나이: " << age << endl;
	}
	~Person()
	{
		delete[]name;
		cout << "called destructor!" << endl;
	}
};

int main()
{
	Person man1("Lee su jin", 25);
	Person man2("Lee gyu su", 27);
	man1.showPersonInfo();
	man2.showPersonInfo();
		
	return 0;
}

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글