생성자 / 소멸자

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
admin