ClapTrap
클래스name
: 생성자로 전달되는 값hit points
(10): ClapTrap의 건강energy points
(10)attack damage
(0)hit points
나 energy points
가 없으면 아무것도 할 수 없음
void attack(const std::string& target);
: 타겟은 attack damage
만큼 hit points
를 잃음 (1 energy points
소모)void takeDamage(unsigned int amount);
: 데미지 입은 타겟이 호출 (amount
만큼 hit points
잃음)void beRepaired(unsigned int amount);
: amount
만큼 자신의 hit points
회복 (1 energy points
소모)ClapTrap <name> attacks <target>, causing <damage> points of damage!
attack damage가 0?
데미지가 0인데 공격해봤자 무슨 소용이지 싶었는데 Clap Trap이라는 것 자체가 보더랜드라는 게임 캐릭터고, 무능하다고 함..ㅎ
기존에 정의된 클래스의 모든 멤버 변수와 멤버 함수를 물려받아 새로운 클래스를 작성하는 것
class 클래스_이름 : 접근제한자 부모_클래스명{
//.. 내용 ..//
}
부모 클래스에서 정의된 함수를 자식 클래스에서 재정의하는 문법
ScavTrap
클래스ClapTrap
=>ScavTrap
순서, 소멸은 반대ClapTrap
의 값 사용name
: 생성자의 인자로 전달되는 값hit points
(100)energy points
(50)attack damage
(20)👉 자식 클래스에서 부모의 private 멤버를 사용할 수 없기 때문에 protected로 접근 제한자 변경 필요
void guardGate();
: Gate keeper mode라는 메시지 출력attack()
은 다른 메시지 출력FragTrap
클래스ClapTrap
을 상속받음ClapTrap
의 값 사용name
: 생성자의 인자로 전달되는 값hit points
(100)energy points
(100)attack damage
(30)void highFivesGuys(void);
: 긍정적인 하이파이브를 요청하는 메시지 출력2개 이상의 클래스로부터 상속을 받는 것
child.FirstParent::getName();
DiamondTrap
클래스FragTrap
과 ScavTrap
을 상속DiamondTrap
에 대한 ClapTrap
은 한 번만 생성되어야 함 (다이아몬드 상속 문제 해결)ClapTrap::name
: 생성자의 인자로 전달되는 값 + _clap_name
name
: 생성자의 인자로 전달되는 값ClapTrap
의 변수명과 똑같이 작성hit points
(FragTrap
)energy points
(ScavTrap
)attack damage
(FragTrap
)attack()
: (ScavTrap
)void whoAmI();
: 자기 이름과 ClapTrap
이름을 모두 출력👉 같은 멤버가 있으면 마지막에 상속받은 클래스의 것으로 덮어씌워지므로 덮어씌워진 값은 수동으로 수정해야 함