[C++] 생성자(Constructor)와 소멸자(Destructor)
Language/C++- 생성자 (Constructor)
생성자는 객체를 생성과 동시에 초기화 할 수 있는 메커니즘이다.
모든 객체는 생성이 되면 메모리를 할당받고 생성자를 호출하게 된다.
생성자는 함수이고 ,클래스의 이름과 같은 이름을 지니며, 리턴이 없다.
1 2 3 4 5 6 | class AAA { int num; public: AAA() { num = 10; } }; |
위와 같이 생성자를 이용하여 객체의 멤버변수를 초기화 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class AAA { int num; public: AAA(int n) { num = n; } }; int main() { AAA a(10); return 0; } |
또한 위와 같이 매개변수를 이용하여 초기화 할 수 있으며 오버로딩도 가능하다.
- 소멸자 (Destructor)
경우에 따라 객체가 소멸되기 전에 처리해야 할 작업이 있을 수 있다. (예를 들어 객체안에서 동적할당을 사용한 경우 메모리 해제)
소멸자는 그러한 일들을 처리하기 위한 메커니즘이다.
모든 객체는 소멸자를 호출하고 메모리 반환후 소멸하게 된다.
소멸자는 함수이고, 클래스의 이름 앞에 ~가 붙은 형태의 이름을 가지며, 리턴이 없다. 또한 생성자와 다르게 매개변수를 받을 수 없다.
1 2 3 4 5 6 7 | class AAA { int *arr; public: AAA(int size) { arr = new int[size]; } ~AAA() { delete []arr; } }; |
위와 같이 소멸자를 이용하여 동적할당받은 메모리를 해제해 줄 수 있다.
- 디폴트 생성자 , 디폴트 소멸자
생성자와 소멸자는 따로 정의하지 않으면 디폴트 생성자와 디폴트 소멸자가 자동으로 삽입되며, 둘은 아무런 일도 하지 않는다.
자동으로 삽입된 디폴트 생성자와 디폴트 소멸자는 아래와 같다.
1 2 3 4 5 6 7 | class AAA { int num; public: AAA() {} ~AAA() {} }; |
'Language > C++' 카테고리의 다른 글
[C++] friend 선언 (0) | 2015.12.02 |
---|---|
[C++] this 포인터 (0) | 2015.12.02 |
[C++] 캡슐화 (EnCapsulation) (0) | 2015.11.30 |
[C++] 정보은닉 (Information Hiding) (0) | 2015.11.30 |
[C++] 동적할당. new와 delete (0) | 2015.11.30 |