영넌 개발로그
[C++ 기초] Class 생성자 Constructor / 소멸자 Destructor 본문
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;
}
};
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] Copy constructor (deep copy, shallow copy) (0) | 2020.12.04 |
---|---|
[C++ 기초] 객체를 함수의 인수로 전달하는 방식 (0) | 2020.12.04 |
[C++ 기초] 포인터 Pointer / Smart Pointer / this / const pointer (0) | 2020.12.04 |
[SFML] 도형 그리기 class로 만들기 (색, 위치, 스피드 다르게 변경) (0) | 2020.12.03 |
Comments