생성자 / 소멸자
Programming/C++ 2015. 5. 29. 22:43생성자
생성자를 사용하는 이유
- 클래스의 객체를 선언하게되면 메모리에 이 객체가 즉시 생성이된다.
하지만 객체는 메모리에 할당만 될 뿐이지 초기화는 되지 않는다.
그래서 그 안에는 쓰레기값이 들어있다.
초기화를 대입연산을 통해서 쓰레기값을 제거할 수 도 있지만 이 방법은 너무 비효율적이다.
멤버가 많아지면 초기화문장도 길어지기 때문이다.
객체를 초기화하는 이 함수를 생성자(Constructor)이라고 한다.
생성자는 클래스 스스로 자신을 초기화하는 방법을 정의하고 클래스를 기본 타입과 동등하게
만드는 언어적 장치이다.
생성자의 특징
1. 리턴 타입이없다.
2. 생성자 함수명은 클래스명과 동일하다.
3. 객체가 생성될 때 컴파일러에 의해서 자동으로 호출된다.
생성자의 인수
- 생성자가 객체를 초기화하기 위해서는 멤버의 모든 초기값을 인수로 전달받아야 한다.
그래서 생성자의 형식 인수 목록과 멤버 목록이 일치하는 경우가 많다.
그런데 형식 인수이름이 멤버 이름과 같아서는 곤란하다.
생성자 오버로딩
- 생성자도 오버로딩이 가능하다.
- 디폴트 인수를 사용할 수 있다.
- 인라인으로 선언할 수도 있다.
- 생성자를 여러개 선언할 수 있다.(하지만 오버로딩 규칙을 따라야한다.)
소멸자
소멸자가 하는 일
- 생성자가 객체를 생성하고 초기화작업을 했다면 객체가 사라질 때 자신이 생성하기 전으로
돌려놔야하는데 그 일을 하는 것이 소멸자이다.
소멸자의 특징
1. 소멸자는 클래스명앞에 '~'을 붙인다.
2. 인수와 리턴값이 없다.
생성자와 소멸자의 공통된 특징
1. 이름이 정해져 있다.
2. 리턴값이 없다.
3. public 속성을 가져야 한다.
4. 생성자는 인수가 있다. 소멸자는 인수 없음
5. friend나 static으로 선언할 수 없다.
6. 소멸자는 가상함수로 쓸 수있지만 생성자는 사용할 수 없다.
7. 생성자/소멸자 둘 다 디폴트가 있다.
'Programming > C++' 카테고리의 다른 글
LARGE_INTEGER (0) | 2015.05.22 |
---|---|
동적 메모리 해제 매크로 (0) | 2015.05.15 |
깊은 복사와 얕은 복사 (0) | 2015.05.13 |
복사생성자 (0) | 2015.05.13 |
클래스와 배열 (0) | 2015.05.13 |