본문 바로가기

c++ 언어/Effective C++

항목 5 : c++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 새우자


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시에  두번 호출되어  죽을 수도 있다.


내 생각은  생성자 , 소멸자 , 대입연산자는 사용자가 클래스를 만들면 만드시 만들어 놓자는 거다

하는일이 없더라도  일단 생성자, 소멸자의 경우  초기화 용도로 추가를 하는거고

대입연산자는 클래스의 맴버변수가 대입이 될 경우  강제라도  직접 코드를 추가하는게  나중에

변수가 추가 및 삭제 될 때  생성자, 소멸자,  대입연산자를 반드시 체크하여 수정을 해야 되기 때문이다.