1、设计哺况动物(Mammal)一狗(Dog)一哈巴狗(Pug)的继承关系,三个类都定义 考虑多种数 Shaak )虚成员丽数。设计外部函数talk()调用虚函数, 参数为Mammal类引用,测试多态性。
时间: 2024-02-11 10:07:34 浏览: 79
好的,以下是设计的代码:
```c++
#include <iostream>
using namespace std;
class Mammal {
public:
virtual void talk() {
cout << "Mammal is talking." << endl;
}
virtual void sleep() {
cout << "Mammal is sleeping." << endl;
}
};
class Dog : public Mammal {
public:
virtual void talk() {
cout << "Dog is barking." << endl;
}
virtual void sleep() {
cout << "Dog is sleeping." << endl;
}
};
class Pug : public Dog {
public:
virtual void talk() {
cout << "Pug is snoring." << endl;
}
virtual void sleep() {
cout << "Pug is sleeping." << endl;
}
};
void talk(Mammal& m) {
m.talk();
}
int main() {
Mammal m;
Dog d;
Pug p;
talk(m);
talk(d);
talk(p);
return 0;
}
```
在这个代码中,我们定义了一个Mammal类,一个Dog类和一个Pug类,它们都继承了Mammal类。每个类都有一个talk()函数和一个sleep()函数,它们都被声明为虚函数。这允许我们在不同的类中重新定义这些函数,从而实现多态性。
我们还定义了一个外部函数talk(),该函数采用Mammal类的引用作为参数。在函数中,我们调用m.talk(),这个函数会根据传递给它的对象类型的不同,调用相应类中的talk()函数。
在main()函数中,我们创建了一个Mammal对象,一个Dog对象和一个Pug对象。我们然后分别调用talk()函数,因为这个函数采用的是Mammal类的引用作为参数,所以它们都会被传递到函数中。由于这些对象都有不同的类型,所以talk()函数会根据对象的类型调用相应类中的talk()函数。
运行程序,输出结果为:
```
Mammal is talking.
Dog is barking.
Pug is snoring.
```
这表明我们成功地实现了多态性。
阅读全文