77. C++ 생성자 / 소멸자
1. 개요
1.1 문서 개요
이 문서는 C++의 생성자(Constructor)와 소멸자(Destructor)에 대해 설명합니다. 생성자와 소멸자는 객체의 생애주기에서 자동으로 호출되는 특수한 함수이며, 객체의 초기화 및 자원 해제를 위한 메커니즘을 제공합니다.
2. 내용
2.1 생성자
2.1.1 기본 생성자
매개변수가 없는 생성자는 기본 생성자라고 하며, 객체 생성 시 자동 호출됩니다.
class MyClass {
public:
MyClass() {
std::cout << "기본 생성자 호출됨" << std::endl;
}
};
2.1.2 매개변수 생성자
생성자는 오버로딩이 가능하며, 매개변수를 통해 객체를 초기화할 수 있습니다.
class MyClass {
public:
int value;
MyClass(int v) : value(v) {
std::cout << "매개변수 생성자 호출됨: " << value << std::endl;
}
};
2.1.3 생성자 초기화 리스트
초기화 리스트는 멤버 초기화를 간결하게 처리할 수 있도록 지원합니다.
MyClass(int v) : value(v) {}
2.2 소멸자
2.2.1 기본 소멸자
객체가 스코프를 벗어나거나 delete
호출 시 자동으로 실행됩니다.
class MyClass {
public:
~MyClass() {
std::cout << "소멸자 호출됨" << std::endl;
}
};
2.2.2 동적 자원 해제에서의 역할
소멸자는 동적 할당된 자원의 누수를 방지하기 위해 자주 사용됩니다.
class MyClass {
int* data;
public:
MyClass() {
data = new int[100];
}
~MyClass() {
delete[] data;
}
};
3. 마무리
생성자와 소멸자는 객체 생명주기의 시작과 끝을 정의하는 중요한 함수입니다. 이를 적절히 정의하면 객체의 안정성과 자원 관리를 효과적으로 구현할 수 있습니다.