class TEST
{
};
TEST test;
위의 클래스를 보면 비어 있지만 실제 3가지 기능이 들어간다.
1. 생성자 2, 소멸자 3. 대입연산자
생성자, 소멸자는 하는 일이 없이 그냥 비어있는 함수다
TEST() , ~TEST()
대입연산자는 클래스를 복사를 한다.
예를 들어
class TEST
{
int a;
int *p;
string str;
};
TEST A;
TEST B;
A = B;
A클래스에 B클래스의 맴버변수가 자동으로 대입이 된다.
문제는 *p 같이 포인터의 주소값을 넘기게 될 경우 메모리 릭 이나 소멸자에서 delete시에 두번 호출되어 죽을 수도 있다.
내 생각은 생성자 , 소멸자 , 대입연산자는 사용자가 클래스를 만들면 만드시 만들어 놓자는 거다
하는일이 없더라도 일단 생성자, 소멸자의 경우 초기화 용도로 추가를 하는거고
대입연산자는 클래스의 맴버변수가 대입이 될 경우 강제라도 직접 코드를 추가하는게 나중에
변수가 추가 및 삭제 될 때 생성자, 소멸자, 대입연산자를 반드시 체크하여 수정을 해야 되기 때문이다.