DiamondTrap.cpp
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* DiamondTrap.cpp :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/08/11 22:00:53 by gychoi #+# #+# */ 9 /* Updated: 2023/08/12 20:37:26 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "DiamondTrap.hpp" 14 #include <iostream> 15 16 /* 17 * Constructor & Destructor 18 */ 19 20 DiamondTrap::DiamondTrap(void) 21 { 22 std::cout << "DiamondTrap default constructor called" << std::endl; 23 const_cast<std::string&>(ClapTrap::name) = "_clap_name"; 24 _hit = 100; 25 _energy = 50; 26 _attack = 30; 27 introduce(); 28 } 29 30 DiamondTrap::DiamondTrap(std::string const& _name) : ClapTrap(_name) 31 { 32 std::cout << "DiamondTrap parameterized constructor called" << std::endl; 33 const_cast<std::string&>(name) = _name; 34 const_cast<std::string&>(ClapTrap::name) = const_cast<std::string&>(_name) + "_clap_name"; 35 _hit = 100; 36 _energy = 50; 37 _attack = 30; 38 introduce(); 39 } 40 41 DiamondTrap::DiamondTrap(DiamondTrap const& target) : ClapTrap(target.name) 42 { 43 std::cout << "DiamondTrap copy constructor called" << std::endl; 44 if (this != &target) 45 *this = target; 46 introduce(); 47 } 48 49 DiamondTrap& DiamondTrap::operator=(DiamondTrap const& target) 50 { 51 std::cout << "DiamondTrap copy assignment operator called" << std::endl; 52 if (this != &target) 53 { 54 const_cast<std::string&>(name) = target.name; 55 _hit = target._hit; 56 _energy = target._energy; 57 _attack = target._attack; 58 } 59 return (*this); 60 } 61 62 DiamondTrap::~DiamondTrap(void) 63 { 64 std::cout << "DiamondTrap destructor called" << std::endl; 65 } 66 67 /* 68 * Public Member Functions : Getter 69 */ 70 71 std::string DiamondTrap::getName(void) const 72 { 73 return (name); 74 } 75 76 /* 77 * Public Member Functions : DiamondTrap Actions 78 */ 79 80 void DiamondTrap::introduce(void) 81 { 82 std::cout << "["<< name << "]: " << "kill... me..." << std::endl; 83 } 84 85 void DiamondTrap::whoAmI(void) 86 { 87 std::cout << "[" << name << "]: " << "I... was called... DiamondTrap '" << name << "'... but also... I was... ClapTrap '" << ClapTrap::name << "'... The Cursed..." << std::endl; 88 }