#include <iostream>
#include <string.h>
using namespace std;
class person{
private :
char *Name;
int age;
public :
person(const char *name, int age)
{
//Name = (char *)malloc(sizeof(char)*40);
Name = new char[50];
strcpy(Name,name);
this->age = age;
}
~person()
{
delete this->Name;
}
void printPerson()
{
printf(\"name : %s\\n\",Name);
}
};
void main()
{
person juho(\"abc\",20);
// person jaeho = juho;
juho.printPerson();
juho.~person();
system(\"pause\");
}
파괴자 호출시 왜 에러뜨죠..?ㅠㅠ
ㅋㅋ 과제포탈 열렸네
파괴자
소멸자를 직접 호출하는거 자체를 처음본건 내가 인생을 헛살아서 그런가..ㄷㄷ
나도 인생을 헛살아서 그런듯... 처음봤음 ㅋㅋㅋ
소멸자는 그냥 소멸될때 실행하는거아님?
파괴자님은 호출에 응답할만큼 널널하지 않아
프로그래머가 따로 호출해도 상관은 없지만 로컬변수 juho는 함수가 리턴될 시점에 메모리에서 정리됨(소멸자가 자동 호출). 결국 juho.~person(); 에서 호출되고 다시 main함수 리턴될대 호출되면서 에러가 발생함. 소멸자에서 juho = 0;으로 다시 잡아주던가하면 되지.
따로 메모리 해제 함수를 만들어서 호출하던가하지 소멸자를 직접 호출하는 경우는 없지.