c23 [C++] 생성자와 소멸자
본문 바로가기
[C++]

[C++] 생성자와 소멸자

by Jarvis2304 2022. 10. 2.

 

▶ 생성자(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

댓글