영넌 개발로그

[C++ 기초] Class 생성자 Constructor / 소멸자 Destructor 본문

코딩/C++

[C++ 기초] Class 생성자 Constructor / 소멸자 Destructor

영넌 2020. 12. 4. 03:52

Constructor 

생성자

class로부터 object가 만들어 질때 실행되는 함수이다. 클래스 이름과 같은 이름을 함수 이름으로 사용한다. 

 

Destructor 

소멸자

object가 사라질때 수행되는 함수이다. 클래스 이름에 ~를 붙여서 선언한다.

생성할때 객체 내부에서 사용하려고 동적으로 메모리를 할당 받을 때가 있다. 근데 object가 그냥 사라져버리면 할당 해제가 되지 않은채로 사라지므로 메모리 누수가 생길 가능 성이 있다. 따라서 객체가 할당받은 동적 메모리를 해제해야 할 때 사용한다. 

오브젝트가 생성된 구역이 끝날 때 실행된다.

 

간단한 예시코드를 보며 이해해보자.

class Car
{
public:
	Car()
	{
		cout << "Car constructor" << endl;
	}
	~Car()
	{
		cout << "Car destructor was called" << endl;
	}
};


int main() {
	cout << "Start ===============" << endl;

	Car c;

	cout << "End =============" << endl;

	return 0;
}

실행결과

main 문에서 { } 를 사용하여 구역을 한 번 나누어서 확인해보자

int main() {
	cout << "Start ===============" << endl;
	{
		Car c;
	}
	cout << "End =============" << endl;

	return 0;
}

실행 결과

 

 

아래 코드에서 delete[ ]가 없어도 실행은 정상적으로 되지만, 지속적인 실행에 있어 좋지 못하다.

class Car
{
private:
	char* ptr;
public:
	Car()
	{
		cout << "Car constructor" << endl;
		ptr = new char[300000000];
	}
	~Car()
	{
		cout << "Car destructor was called" << endl;
		delete[] ptr;
	}
};

Comments