[42Seoul] CPP 03 클래스 상속42 Seoul2022. 7. 15. 16:36
Table of Contents
Exercise 00
ATTACK과 HP를 채울 때, energy point가 1 소비 됩니다.
HP가 없거나 energy가 없을 때에는 행동을 할 수가 없습니다.
attack 함수로 대상이 공격받는 것과 데미지 등을 출력해야 합니다.
생성자와 소멸자 실행될 때에도 출력을 해야합니다.
exercise 01
ScavTrap은 ClapTrap을 상속하게 됩니다.
생성자와 소멸자 그리고 공격함수는 다른 출력을 해야만 합니다.
ScavTrap을 만들 때, ClapTrap을 만드는 것으로 시작해야합니다.
소멸자는 생성과는 앞 문단 상황과 반대로 나와야 합니다.
ScavTrap과 ClapTrap의 명확하게 표기를 하기 위해 출력을 ex00과는 다르게 수정을 하였습니다.
exercise 02
ClapTrap을 상속하는 FragTrap을 만들어야 합니다.
생성자와 소멸자에서 ScavTrap과 유사하지만 메세지가 달라져야 합니다.
Inheritance 상속
코드의 재활용성을 제공하여, 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련
class inheritance 클래스 상속
기존에 정의된 클래스의 모든 멤버 변수와 멤버 함수를 물려받아, 새로운 클래스를 작성하는 것을 의미, 상속을 통해서 부모 / 자식 클래스로 구분
dervied class 파생 클래스(자식)
기초클래스(부모)의 모든 특성을 물려받아 새롭게 작성된 클래스
class 파생클래스이름 : 접근제어지시자 기초클래스이름 [, 접근제어지시자 기초클래스이름, ...]
{
// 파생 클래스 멤버 리스트
}
접근 제어 지시자는 기초 클래스의 멤버를 사용할 수 있는 파생 클래스의 접근 제어 권한을 설정합니다.
이때 접근 제어 지시자를 생략하면, 파생 클래스의 접근 제어 권한은 private로 기본 설정
또한, 쉼표(,)를 사용하여 상속받을 기초 클래스를 여러 개 명시할 수 있습니다.
파생 클래스의 객체 생성 순서
- 파생 클래스의 객체를 생성하면, 프로그램은 제일 먼저 기초 클래스의 생성자를 호출합니다.
이때 기초 클래스 생성자는 상속받은 멤버 변수의 초기화를 진행합니다. - 파생 클래스의 생성자가 호출됩니다.
- 반대로 파생 클래스의 수명이 다하면, 먼저 파생 클래스의 소멸자가 호출되고, 그 후에 기초 클래스의 소멸자가 호출
'42 Seoul' 카테고리의 다른 글
[CPP 03~05] class, inheritance memory address (0) | 2022.07.21 |
---|---|
[42Seoul] CPP04 virtual (0) | 2022.07.15 |
[42Seoul] CPP 02 (0) | 2022.07.11 |
[42Seoul] CPP 01 (0) | 2022.07.11 |
[NetPractice] 네트워킹 계산 (0) | 2022.07.07 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!