补充完整有关类和函数ShowAnimal的定义,使得主函数能正确的执行。 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #include <iostream> #include <string.h> using namespace std; class Animal{ int speed; float jpheight; char food[21]; //长度不超过十个汉字,这里可以使用数组,不必用指针 public: Animal(int s, float h, char f[]=""){ speed = s; jpheight = h; strcpy(food,f); } virtual void Show()=0; void Set(int s, float h, char f[]=""){ speed = s; jpheight = h; strcpy(food,f); } friend ostream& operator<<(ostream& o, Animal& a); }; ostream& operator<<(ostream& o, Animal& a){ o<<a.speed<<" "<<a.jpheight<<" "<<a.food; return o; } /* 请在这里填写答案 */ int main(){ Cat mao; //定义对象mao mao.Set(); //输入mao的参数 Dog gou(8, 1.3, "筒子骨", 30); //定义对象狗并初始化 ShowAnimal(mao); ShowAnimal(gou); }
时间: 2024-03-03 09:50:32 浏览: 99
在题目中,要求补充完整有关类和函数ShowAnimal的定义,使得主函数能正确的执行。因此,我们需要在代码中添加类的定义和函数的定义。根据代码中的提示,我们可以得到如下的代码:
```c++
#include <iostream>
#include <string.h>
using namespace std;
class Animal{
int speed;
float jpheight;
char food[21];
public:
Animal(int s, float h, char f[]=""){
speed = s; jpheight = h;
strcpy(food,f);
}
virtual void Show()=0;
void Set(int s, float h, char f[]=""){
speed = s; jpheight = h;
strcpy(food,f);
}
friend ostream& operator<<(ostream& o, Animal& a);
};
ostream& operator<<(ostream& o, Animal& a){
o<<a.speed<<" "<<a.jpheight<<" "<<a.food;
return o;
}
class Cat : public Animal{
public:
Cat(int s=10, float h=0.5, char f[]="鱼") : Animal(s, h, f) {}
void Show(){
cout << "猫的速度:" << speed << endl;
cout << "猫的跳跃高度:" << jpheight << endl;
cout << "猫的食物:" << food << endl;
}
};
class Dog : public Animal{
int iq;
public:
Dog(int s=20, float h=1.0, char f[]="肉", int i=50) : Animal(s, h, f), iq(i) {}
void Show(){
cout << "狗的速度:" << speed << endl;
cout << "狗的跳跃高度:" << jpheight << endl;
cout << "狗的食物:" << food << endl;
cout << "狗的智商:" << iq << endl;
}
};
void ShowAnimal(Animal& a){
cout << a << endl;
a.Show();
}
int main(){
Cat mao; //定义对象mao
mao.Set(5, 0.3, "鱼"); //输入mao的参数
Dog gou(8, 1.3, "筒子骨", 30); //定义对象狗并初始化
ShowAnimal(mao);
ShowAnimal(gou);
return 0;
}
```
在上述代码中,我们定义了两个派生类 `Cat` 和 `Dog`,它们分别从基类 `Animal` 继承。在 `Animal` 类中,我们定义了成员变量 `speed`、`jpheight` 和 `food`,并添加了构造函数、`Set` 函数、`Show` 函数和友元函数 `operator<<`。其中,`operator<<` 函数用于输出 `Animal` 对象的信息,`Show` 函数是一个虚函数,用于在派生类中显示具体信息。在 `Cat` 和 `Dog` 类中,我们分别定义了它们的构造函数,并重载了 `Show` 函数。最后,在 `main` 函数中,我们定义了两个对象 `mao` 和 `gou`,并对它们进行了初始化,然后调用了 `ShowAnimal` 函数,输出了它们的信息。
阅读全文