반응형
생성자(constructor)
→ 공을 생산하는 기계가 있음. 일반적으로 흰 공을 생산하다가, 빨간색 페인트를 주입하면 빨간공이, 파란색 페인트를 주입하면 파란공이 나온다. 생산 시점에 원하는 색의 페인트를 주입하면 다양한 색의 공을 생산 가능
- 클래스에서 객체를 생성할 때 객체를 초기화 가능하다.
- 공을 생산할 때 공의 색을 바꿀 수 있다는 말과 동일함.
- 클래스는 객체가 생성될 때 자동으로 실행되는 생성자(constructor)라는 특별한 멤버 함수를 통해 객체를 초기화 한다. 한 클래스에 여러 개의 생성자를 둘 수 있으나, 이 중 하나만 실행됨.
생성자의 특징
1. 생성자의 목적은 객체가 생성될 때 필요한 초기 작업을 위함이다.
- 예를 들어 멤버 변수의 값을 특정 값으로 설정하거나, 메모리를 동적 할당 받거나, 파일을 열거나, 네트워크를 연결하는 등 객체를 사용하기 전에 필요한 조치를 할 수 있도록 하기 위함이다.
2. 생성자 함수는 오직 한번만 실행된다.
- 생성자 함수는 각 객체마다 객체가 생성되는 시점에 오직 한 번만 자동으로 실행된다. 공에 페인트를 한번 칠하듯이.
3. 생성자 함수의 이름은 클래스 이름과 동일하게 작성되어야 한다.
- 이로 인해 생성자는 다른 멤버 함수와 쉽게 구분 할 수 있다.
4. 생성자 함수의 원형에 리턴 타입을 선언하지 않는다.
- 생성자는 함수이지만 리턴 타입을 선언해서는 안된다. void도 안됨.
5. 생성자는 중복 가능하다.
- but 중복된 생성자 중 하나만 실행된다.
소멸자(Destructor)
→ 객체 생성시 생성자 함수가 실행되는 것처럼 객체 소멸 시 소멸자 함수가 반드시 실행 된다. 소멸자는 객체가 소멸되는 시점에서 자동으로 호출되는 클래스의 멤버 함수이다.
소멸자의 특징
1. 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 위함이다.
- 객체가 소멸할 때, 동적으로 할당받은 메모리를 운영체제에 돌려주거나, 열어놓은 파일을 저장하고 닫거나, 연결된 네트워크를 해제하는 등 객체가 사라지기 전에 필요한 조치를 하도록 하기 위함이다.
2. 소멸자의 이름은 클래스 이름 앞에 ~를 붙인다.
Circle::~Circle() {...}
3. 소멸자는 리턴 타입이 없으며 어떤 값도 리턴해서도 안된다.
- 소멸자는 생성자와 같이 리턴 타입 없이 선언되며 어떤 값도 리턴해서는 안 된다.
4. 소멸자는 오직 한 개만 존재하여 매개변수를 가지지 않는다.
- 소멸자는 생성자와 달리 한 클래스에 한 개만 존재하며 매개변수를 가지지 않는다.
5. 소멸자가 선언되어 있지 않으면 기본 소멸자(default destructor)가 자동으로 생성된다.
- 생성자와 같이 클래스에 선언하지 않으면 자동으로 기본 소멸자가 생성된다. 이때 기본 소멸자는 아무 일도 하지 않고 단순 리턴하도록 만들어진다.
3. C++ 클래스(Class), 생성자(Constructor), 소멸자(Destructor)
반응형
'C++ > C++ 클래스, 생성자 초기화 리스트' 카테고리의 다른 글
생성자 초기화 리스트 (0) | 2023.12.01 |
---|---|
this (2) | 2023.11.30 |
private, public (0) | 2023.11.30 |
클래스 (2) | 2023.11.30 |