说明:
这学期开了面向对象的课程,老师上星期布置了作业,之前用JAVA写了一遍,今天心血来潮又用C++写了一遍。博主只会敲代码,但面向对象是小白一个,欢迎交流学习。
题目:
C++代码:
#include <iostream>
#include <algorithm>
#include <string>
constexpr int MAX_LEN = 3;
class Animal{
private:
int age;
std::string color;
std::string animalType = "未知种类的动物";
public:
Animal() {
}
Animal(int age, std::string color){//重载构造函数
this->age = age;
this->color = color;
}
int getAge() const {
return age;
}
void setAge(int age) {
Animal::age = age;
}
const std::string &getColor() const {
return color;
}
void setColor(const std::string &color) {
Animal::color = color;
}
const std::string &getAnimalType() const {
return animalType;
}
void setAnimalType(const std::string &animalType) {
Animal::animalType = animalType;
}
virtual void eat(std::string something){
std::cout << getAnimalType() << "吃" << something << '\n';
}
};
class Cat: public Animal{
private:
public:
Cat():Animal() {
}
Cat(int age, std::string color):Animal(age, color) {
setAnimalType("猫");
}
void catchMouse() {
std::cout << "猫抓老鼠" << '\n';
}
void eat(std::string something) override {
std::cout << getAge() << "岁" << getColor() << "的猫眯着眼睛侧着头吃";
std::cout << something << '\n';
}
};
class Dog: public Animal{
private:
public:
Dog():Animal() {
}
Dog(int age, std::string color):Animal(age, color) {
setAnimalType("狗");
}
void lookHome() {
std::cout << "狗看家" << std::endl;
}
void eat(std::string something) override {
std::cout << getAge() << "岁的" << getColor() << "的狗两只前腿死死地抱住";
std::cout << something << "猛吃\n";
}
};
class Person{
private:
std::string name;
int age;
public:
Person() {
}
Person(std::string name, int age) {
this->name = name;
this->age = age;
}
const std::string &getName() const {
return name;
}
void setName(const std::string &name) {
Person::name = name;
}
int getAge() const {
return age;
}
void setAge(int age) {
Person::age = age;
}
void keepPet(Animal &animal,std::string something) {
std::cout << "年龄为" << getAge() << "岁的" << getName() << "养了一只";
std::cout << animal.getColor() << "的" << animal.getAge() << "岁的";
std::cout << animal.getAnimalType() << '\n';
animal.eat(something);
}
};
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
Animal *animals[MAX_LEN];
animals[0] = new Dog(2, "黑颜色");
animals[1] = new Cat(3, "灰颜色");
animals[2] = new Animal(4, "白颜色");
Person *persons[MAX_LEN];
persons[0] = new Person("老王", 30);
persons[1] = new Person("老李", 25);
persons[2] = new Person("老张", 40);
persons[0]->keepPet(*animals[0], "骨头");
persons[1]->keepPet(*animals[1], "鱼");
persons[2]->keepPet(*animals[2], "肉");
return 0;
}