编写动物类animal,受保护数据成员name,age,共有函数成员void show(),输出“Animal,名称,年龄”
时间: 2024-05-08 22:19:01 浏览: 36
好的,我可以帮您编写一个Animal类,代码如下:
```
class Animal {
protected:
string name; // 受保护的数据成员name,表示动物名称
int age; // 受保护的数据成员age,表示动物年龄
public:
void show() { // 公有函数成员void show(),显示动物信息
cout << "Animal," << name << "," << age << endl;
}
};
```
这个Animal类有两个受保护的数据成员,分别是名称name和年龄age,还有一个公有的show()函数成员,可以输出Animal的名称和年龄信息。如果您需要创建一个新的动物对象,请先使用构造函数对name和age进行初始化,例如:
```
Animal dog;
dog.name = "小狗";
dog.age = 2;
dog.show(); // 输出:Animal,小狗,2
```
希望这个Animal类满足您的要求,如果您有任何其他问题,请随时提出。
相关问题
设计一个动物园程序,有两个类:动物类 Animal。其中,动物类包含公有属性 name 和 age,以及虚函数 show();
好的,我理解了你的要求。以下是一个简单的动物园程序的示例,其中包含动物类 Animal 和一个具体的实现 Lion:
```python
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
raise NotImplementedError("Not implemented yet.")
class Lion(Animal):
def show(self):
print(f"I am a lion named {self.name}, and I am {self.age} years old.")
lion = Lion("Simba", 5)
lion.show() # Output: "I am a lion named Simba, and I am 5 years old."
```
这个程序中,Animal 类定义了动物的基本属性和一个没有具体实现的虚函数 show。Lion 类继承了 Animal 类,并实现了 show 函数以打印出这只狮子的信息。当创建一个 Lion 的实例并调用 show 函数时,程序将输出这只狮子的名字和年龄。
希望这个简单的示例程序对你有帮助。如果有其他问题,请随时问我。
现有动物类Animal,包含名称name和年龄age数据成员,返回年龄GetAge、显示信息Showhe。由动物类派生出羊类Sheep和驼类Camel,前者增加重量、后者增加品种两个数据成员,都有显示信息的函数。羊驼类Alpace由羊类Sheep和驼类Camel公派生而来,定义各个类并测试相关功能。
好的,这是一个关于面向对象编程的问题。根据您的描述,我可以为您提供以下代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Animal {
protected:
string name;
int age;
public:
Animal(string n, int a) : name(n), age(a) {}
int GetAge() { return age; }
void Show() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
class Sheep : public Animal {
private:
double weight;
public:
Sheep(string n, int a, double w) : Animal(n, a), weight(w) {}
void Show() {
Animal::Show();
cout << "Weight: " << weight << endl;
}
};
class Camel : public Animal {
private:
string breed;
public:
Camel(string n, int a, string b) : Animal(n, a), breed(b) {}
void Show() {
Animal::Show();
cout << "Breed: " << breed << endl;
}
};
class Alpaca : public Sheep, public Camel {
public:
Alpaca(string n, int a, double w, string b) : Sheep(n, a, w), Camel(n, a, b) {}
void Show() {
Sheep::Show();
Camel::Show();
}
};
int main() {
Sheep s("Dolly", 2, 50.5);
Camel c("Humphrey", 4, "Bactrian");
Alpaca a("Paco", 1, 30.2, "Dromedary");
s.Show();
cout << endl;
c.Show();
cout << endl;
a.Show();
return 0;
}
```
以上代码定义了 Animal、Sheep、Camel 和 Alpaca 四个类,分别表示动物、羊、驼和羊驼。其中 Animal 类包含名称和年龄两个数据成员,GetAge() 函数用于返回年龄,Show() 函数用于显示信息。Sheep 类和 Camel 类分别继承自 Animal 类,增加了重量和品种两个数据成员,同时重写了 Show() 函数以显示新增的数据成员。Alpaca 类继承自 Sheep 类和 Camel 类,因此具有两个父类的数据成员和函数成员。在主函数中,我们实例化了三个对象,分别为一个羊、一个驼和一个羊驼,然后分别调用它们的 Show() 函数以显示信息。
值得注意的是,由于 Alpaca 类同时继承自 Sheep 类和 Camel 类,因此在 Alpaca 类中需要使用虚继承(virtual inheritance)来解决菱形继承问题。但是由于本例中 Alpaca 类没有使用到 Animal 类的数据成员和函数成员,因此可以不需要将 Animal 类设置为虚基类。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)