안녕하세요! 공대남입니다. 오늘은 c++의 생성자와 소멸자에 대해서 알아보겠습니다.

객체지향언어에서는 클래스가 굉장히 중요하고 큰 부분을 차지합니다.

이전 글에서 클래스안 private 객체의 멤버변수를 초기화할 때는 클래스 내의 public 함수를 호출하여

맴버를 초기화 하였습니다. 하지만 이 생성자를 사용하면 객체도 생성과 동시에 초기화 할 수 있습니다.

그럼 이 '생성자'와 '소멸자'에 관해서 자세히 알아보도록 하겠습니다.


차례

1. 생성자

2. 소멸자

1. 생성자


먼저 지난 번에 썼던 코드를 활용해보겠습니다. 이와 같은 경우 Point2D의 private의 객체멤버 int x, y를 초기화 하기위해서

Init() 함수를 활용해서 접근해야만 했습니다.

하지만, 이와 같은경우는 꽤나 번거로울 수 있습니다.

( 제한적 값만 받아들이기 위해서 정보은닉을 하는 경우를 제외 한다면 )

그래서 이와같은 귀찮음을 생성자가 덜어 줍니다. 그럼 생성자를 사용한 코드를 보겠습니다.

생성자는 public 에서 다음과 같은 특징을 가지고 생성됩니다.

1) 클래스의 이름과 함수의 이름이 동일하다.

2) 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다.

이러한 유형의 함수를 가리켜 생성자라고 하며, 객체 생성시 딱 한번만 호출됩니다.

void ShowInfo() 는 객체멤버들의 값을 출력합니다.

그리고 메인함수에서 Point2D p1; 이라고 선언하게 되면 선언과 동시에 멤버가 초기화가 됩니다.

컴파일 하게되면 다음과 같이 출력됩니다.

다음과 같이 10,20이 클래스를 선언하자마자 초기화 되었습니다.

2. 소멸자

객체생성시 반드시 호출되는 것이 생성자라면, 객체소멸시 반드시 호출되는 것이 소멸자입니다.

소말자는 다음과 같은 특징을 갖고 있습니다.

1) 클래스의 이름 앞에 '~'가 붙은 형태의 이름을 갖는다.

2) 생성자와 같이 반환형이 선언되어 있지 않습니다.

3) 매개변수는 void형으로 선언되어야 하기 때문에 오버로딩이나 디폴트 값 설정이 불가능합니다.

다음과 같이 인적 정보를 저장하는 클래스를 만들었습니다.

객체 멤버로써는 name 과 age 가 있습니다.

public 영역에는 생성자를 통하여 이름과 나이를 선언과 동시에 초기화 할 수 있도록 했습니다.

그리고 밑에 보시면 ~Person() 이라는 소멸자가 있습니다.

위 코드에서 보이는 것과 같이 소멸자를 정의하면 됩니다.

그럼 할당된 메모리가 해체가 됩니다.

-

오늘은 쉽게 알아보기위해 생성자와 소멸자에 관련된 간단한 코드를 보았습니다.

객체지향언어에서는 class가 큰 부분을 차지하기 때문에 잘 알아두시면 매우 유용할 것 입니다.

다음번에는 더 좋은글 글과 정보로 찾아뵙도록 하겠습니다. 감사합니다.

+ Recent posts