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 이름을 모두 출력👉 같은 멤버가 있으면 마지막에 상속받은 클래스의 것으로 덮어씌워지므로 덮어씌워진 값은 수동으로 수정해야 함