定义基类 Animal, 包含保护数据成员 name 和纯虛函数talk(),定义猫类 cat,继承 Animal 类,实现 talk()方法,输出为:cout<<name<< “MiaoMiao” <<endl;定义狗类 Dog;继承Animal 类,实现talk()方法,输出为: cout<<name<< "WangWang" <<endl. 输入描述:有键盘输入动物个数和每种动物的信息,包括动物关型 (其中C 表示猫类,D表示正方形类)及其 相应名称。 猫的输入格式为:C名字 狗的输入格式为:D名字 输出描述:通过 Animal 类的对象指针调用虚函数 talk(),依次输出每种动物的叫的动作。 猫的信息输出格式为: Cat 的名字叫的动作 狗的信息输出格式为: Dog 的名字叫的动作
时间: 2024-03-26 11:34:51 浏览: 46
好的,以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Animal {
protected:
string name;
public:
virtual void talk() = 0;
};
class Cat : public Animal {
public:
Cat(string n) {
name = n;
}
void talk() {
cout << "Cat " << name << " MiaoMiao" << endl;
}
};
class Dog : public Animal {
public:
Dog(string n) {
name = n;
}
void talk() {
cout << "Dog " << name << " WangWang" << endl;
}
};
int main() {
int n;
cin >> n;
vector<Animal*> animals;
for (int i = 0; i < n; i++) {
char type;
string name;
cin >> type >> name;
if (type == 'C') {
animals.push_back(new Cat(name));
} else if (type == 'D') {
animals.push_back(new Dog(name));
}
}
for (auto animal : animals) {
animal->talk();
}
return 0;
}
```
输入格式为:
```
动物个数
C/D 名字
C/D 名字
...
```
例如:
```
3
C Tom
D Jerry
C Kitty
```
输出结果为:
```
Cat Tom MiaoMiao
Dog Jerry WangWang
Cat Kitty MiaoMiao
```
阅读全文