▶ 생성자(constructor)
- 객체가 생성되는 시점에서 자동으로 호출되는 멤버 함수
- 클래스 이름과 동일한 멤버 함수

▷ 생성자의 목적
- 객체가 생성될 때 객체가 필요한 초기화를 하기위해 (멤버 변수 값 초기화, 메모리 할당, 파일 열기, 네트워크 연결 등)
▷ 생성자 이름
- 반드시 클래스 이름과 동일
▷ 생성자 리턴 타입을 선언하지 않는다
- 리턴 타입 없음(void 타입도 안됨)
▷ 객체 생성 시 오직 한 번만 호출
- 자동으로 호출됨, 임의 호출할 수 없음. 각 객체마다 생성자 실행
▷ 생성자는 중복 가능
- 생성자는 한 클래스 내에 여러 개 가능
- 중복된 생성자 중 하나만 실행
▷ 생성자가 선언되어 있지 않으면 기본 생성자 자동으로 생성
- 기본 생성자 :매개 변수가 없는 생성자
- 컴파일러에 의해 자동 생성




▷기본 생성자
- 클래스에 생성자가 하나도 선언되어 있지 않은 경우, 컴파일러가 대신 삽입해주는 생성자
- 매개 변수 없는 생성자
- 디폴트 생성자라고도 부름

1. 생성자는 꼭 있어야 하는가?
- Yes, C++ 컴파일러는 객체가 생성될 때, 생성자 반드시 호출
2. 개발자가 클래스에 생성자를 작성해 놓지 않으면?
- 컴파일러에 의해 기본 생성자가 자동으로 생성


▶ 소멸자
- 객체가 소멸되는 시점에서 자동으로 호출되는 함수
- 오직 한번만 자동 호출, 임의로 호출할 수 없음
- 객체 메모리 소멸 직전 호출됨

▷ 소멸자의 목적
- 객체가 사라질 때 마무리 작업을 위함
- 실행 도중 동적으로 할당 받은 메모리 해제, 파일 저장 및 닫기, 네트워키 닫기 등
▷ 소멸자 함수의 이름은 클래스 이름 앞에 ~를 붙인다
ex) Circle::~Circle{ ... }
▷ 소멸자는 리턴 타입이 없고, 어떤 값도 리턴하지 안됨
- 리턴 타입 선언 불가
▷ 중복 불가능
- 소멸자는 한 클래스 내에 오직 한 개만 작성 가능
- 소멸자는 매개 변수 없는 함수
▷ 소멸자가 선언되어 있지 않으면 기본 소멸자가 자동 생성
- 컴파일러에 의해 기본 소멸자 코드 생성
- 컴파일러가 생성한 기본 소멸자 :아무 것도 하지 않고 단순 리턴

▶ 생성자/소멸자 실행 순서
▷ 객체가 선언된 위치에 따른 분류
- 지역 객체 :함수 내에 선언된 객체로서, 함수가 종료하면 소멸
- 전역 객체 :함수 바깥에 선언된 객체로서, 프로그램이 종료할 때 소멸
▷ 객체 생성 순서
- 전역 객체는 프로그램에 선언된 순서로 생성
- 지역 객체는 함수가 호출되는 순간에 순서대로 생성
▷ 객체 소멸 순서
- 함수가 종료하면, 지역 객체가 생성된 순서의 역순으로 소멸
- 프로그램이 종료하면, 전역 객체가 생성된 순서의 역순으로 소멸
▷ new를 이용하여 동적으로 생성된 객체의 경우
- new를 실행하는 순간 객체 생성
- delete 연산자를 실행할 때 객체 소멸


참고문헌: 명품 C++ Programming
'[C++]' 카테고리의 다른 글
[C++] 인라인 함수 (0) | 2022.10.03 |
---|---|
[C++] 접근 지정자 (캡슐화) (0) | 2022.10.03 |
[C++] 클래스, 객체 생성하기 (0) | 2022.09.30 |
[C++] namespace (0) | 2022.09.19 |
[C++] 기본 입출력 (2) | 2022.09.17 |
댓글