-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcat.h
126 lines (107 loc) · 2.11 KB
/
cat.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "animal.h"
class Cat : public Animal
{
private:
std::string breed;
public:
Cat() : Animal(), breed("None")
{
}
Cat(const Cat& c):Animal(c),breed(c.breed){
}
Cat(std::string name_, int age_, std::string breed_) : Animal(name_, age_), breed(breed_)
{
}
Cat(Cat&& c) : Animal(c),breed(std::move(c.breed)){
}
~Cat(){}
void Print() const override
{
std::cout << "(" << id << ")"
<< " " << name << " " << age << " " << breed << " ";
}
std::string ToEat() const override
{
std::string message;
message = "Cat " + name + " wants eat!\n";
return message;
}
std::string ToSleep() const override
{
std::string message;
message = "Cat " + name + " want to sleep!\n";
return message;
}
void Play(){
std::cout <<id <<" "<< name <<" is playing ";
}
std::string Say()
{
std::string message = " meows\n";
return name + message;
}
std::string GetBreed() const
{
return breed;
}
std::string GetCatName() const
{
return name;
}
int GetCatAge() const
{
return age;
}
bool operator<(const Cat &rhs) const
{
if (name < rhs.name)
{
return true;
}
else if (name == rhs.name)
{
if (age < rhs.age)
{
return true;
}
else if (age == rhs.age)
{
return breed < rhs.breed;
}
}
return false;
}
bool operator==(const Cat &other) const
{
return name == other.name && age == other.age && breed == other.breed;
}
Cat &operator= (const Cat &a)
{
if(this == &a){
return *this;
}
name = a.name;
age = a.age;
breed = a.breed;
return *this;
}
Cat& operator= (Cat&& c){
if(this == &c){
return *this;
}
name = c.name;
age = c.age;
breed = c.breed;
return *this;
}
};
std::ostream &operator<<(std::ostream &ostream, Cat &a)
{
std::string name_ = a.GetAnimalName();
int age_ = a.GetAnimalAge();
std::string breed = a.GetBreed();
int id = a.getId();
ostream <<"id("<<id<<") "<< name_ << " " << age_<<" "<<breed;
ostream << "\n";
return ostream;
}