/ CPP_Modules / CPP_Module_03 / ex03 / DiamondTrap.cpp
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  }