*이전 포스팅 내용 정리* -> 생성자와 소멸자의 선언,정의
생성자
1. 특징
ㄴ리턴값x
ㄴ이름 = 클래스 이름
ㄴconst한정자x
2. 종류
ㄴ매개변수 있는 생성자 / 기본 생성자 / 복사 생성자
3. 선언
Class Circle{
public:
Circle(double radius); // 매개변수가 있는 생성자
Circle(); // 기본 생성자 -> 괄호 없어도 됨
Circle(const Circle& circle); // 복사 생성자
...
}
4. 정의
ㄴ생성자는 함수 헤더 뒤에 초기화 리스트 문법(:)을 사용해서 데이터멤버를 초기화(헤더와 본문 사이 :로 시작)
소멸자
1. 특징
ㄴ리턴값x
ㄴ이름 = ~클래스 이름
ㄴ객체가 스코프 벗어날 때 자동호출
ㄴ오버로드x
ㄴpublic 적용해야함
2. 선언
class Circle{
...
public:
...
~Circle(); //소멸자
}
3. 정의
//소멸자 정의
Circle::~Circle(){
//문장
}
*복습 끝!*
03 생성자와 소멸자
4 생성자와 소멸자의 호출
Circle circle1(5,1); //매개변수 있는 생성자
Circle circle2; //기본 생성자
Circle circle3(aCircle); //복사 생성자 -> aCircle은 이미 존재하는 다른 객체
//소멸자 -> 시스템이 호출한다
멤버 | 클래스 자료형 | 내장 자료형 |
매개변수 있는 생성자 | Circle circle1(10.0); | double x1 = 10.0; |
기본 생성자 | Circle circle2; | doble x2; |
복사 생성자 | Circle circle3(circle1) | 없음 |
소멸자 | 사용자가 호출하지 않 | 사용자가 호출하지 않음 |
5 필수 멤버 함수
-클래스에는 아래 구분된 그룹별로 함수가 하나씩 필요하다
ㄴ만약 만들지 않으면 시스템이 해당 그룹의 함수를 자동으로 생성
- 매개변수 있는 생성자 / 기본 생성자 -> (그룹1)
- 복사 생성자 -> (그룹2)
- 소멸자 -> (그룹3)
-그룹1
ㄴ매개변수 있는 생성자 or 기본 생성자 중 1개를 만들지 않으면, 시스템은 합성 기본 생성자를 만든다
ㄴ합성 기본 생성자는 데이터 멤버를 쓰레기 값으로 초기화한다
-그룹2
ㄴ복사 생성자를 만들지 않으면, 시스템은 합성 복사 생성자를 만든다
-그룹3
ㄴ소멸자를 만들지 않으면, 시스템은 합성 소멸자를 만든다
-> 되도록 직접 구현하는 것이 좋다
'2023 c++' 카테고리의 다른 글
23년 C++ chap7 클래스와 생성자 -> 생성자와 소멸자(선언,정의) (0) | 2023.08.01 |
---|---|
23년 C++ chap7 클래스와 생성자 -> 인라인 함수 / 애플리케이션 (0) | 2023.07.26 |
23년 C++ chap7 클래스와 생성자 -> 객체 지향과 클래스 (0) | 2023.07.21 |
23년 C++ chap7 클래스와 생성자 -> 클래스 (0) | 2023.07.19 |
23년 C++ chap6 함수 -> 매개변수와 오버로딩 / 스코프와 수명 (2) | 2023.07.19 |