C++ 정리 5(클래스와 객체(3))
C++ 정리 5(클래스와 객체(3))
이번 시간에는 소멸자를 정리해보도록 하겠습니다.
생성자는 객체가 생성될 때 실행되는 멤버 함수였고 소멸자는 그럼 이름만 보았을 때 어떨 때 실행되는 함수 일까요?
네, 소멸자는 객체가 소멸될때 자동으로 호출되는 멤버 함수 입니다.
소멸자의 특징은 다음과 같습니다.
- 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 위함입니다.
- 소멸자의 이름은 클래스 이름 앞에 ~를 붙입니다.
- 소멸자는 리턴 타입이 없으며 어떤 값도 리턴해서도 안 됩니다.
- 소멸자는 오직 한 개만 존재하며 매개 변수를 가지지 않습니다.
- 소멸자가 선언되어 있지 않으면 기본 소멸자가 자동으로 생성됩니다.
다음 코드를 보면서 소멸자를 어떻게 사용하는지 자세히 보겠습니다.
소멸자 실행
int main(){
Circle donut;
Circle pizza(30);
return 0;
}
이러한 코드가 있다고 생각해봅시다.
소멸자는 어디서 실행이 될까요?
소멸자는 return 0; 문이 실행되면 생성된 반대순으로 즉 pizza, donut 순으로 소멸자가 실행이 됩니다.
다음은 소멸자 예시 코드입니다.
#include
using namespace std;
class Circle {
public:
int radius;
Circle();
Circle(int r);
~Circle();// 소멸자 선언
double getArea();
};
Circle::Circle() {
radius = 1;
cout « “반지름 “ « radius « ” 원 생성” « endl;
}
Circle::Circle(int r) {
radius = r;
cout « “반지름” « radius « ” 원 생성” « endl;
}
Circle::~Circle() {
cout « “반지름 “ « radius « ” 원 소멸” « endl;
}
double Circle::getArea() {
return 3.14* radius *radius;
}
int main() {
Circle donu;
Circle pizza(30);
return 0;
}
여기 까지 소멸자 정리를 끝내고 다음으로는 접근 지정자에 대해서 정리해보겠습니다.
접근 지정자
전에도 말했듯이 접근 지정자에는 3가지 종류가 있습니다.
- private
- public
- protected
클래스의 디폴트 값은 private입니다. private는 클래스 내의 멤버 함수들에게만 접근이 가능하고 클래스 외부에서는 절대 접근 할 수 없습니다.
public 은 클래스 내부 외부 모두 접근이 가능하고 모든 함수에서 접근이 가능합니다.
protected 클래스 내의 멤버함수와 이 클래스를 상속받은 자식 클래스의 멤버 함수 들만 접근이 가능합니다.
여기서 주의 할점은 생성자는 public 접근 지정자를 주어야 한다. 왜냐하면 생성자는 호출 되어야 하기 때문입니다.