c++编写程序【问题描述】声明一个哺乳动物类Mammal,再由此派生出狗类Dog, 自行根据需要定义相关的成员,达到以下要求: (1)达到以上题目所规定的类族要求。 (2)编制一个名为creating的函数,在该函数实现中声明一个Dog类的对象,实现对象的speak()函数的调用 (3)编制主函数,在主函数中调用creating 函数,调用结束后观察基类与派生类的构造函数与析构函数的调用顺序。 【输入形式】无输入。 【输出形式】分别输出对应类的构造函数和析构函数的调用信息 【样例输入】无输入 【样例输出】 Mammal constructor Dog constructor wang wang Dog destructor Mammal destructor 【程序说明】需要在对应的构造函数和析构函数中写入相关的调用信息,如样例所示。请保持样例指定信息一致,否则无法通过系统检测。
时间: 2024-03-14 15:47:43 浏览: 199
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
class Mammal {
public:
Mammal() {
cout << "Mammal constructor" << endl;
}
virtual ~Mammal() {
cout << "Mammal destructor" << endl;
}
virtual void speak() {
cout << "Mammal speak" << endl;
}
};
class Dog : public Mammal {
public:
Dog() {
cout << "Dog constructor" << endl;
}
~Dog() {
cout << "Dog destructor" << endl;
}
void speak() {
cout << "wang wang" << endl;
}
};
void creating() {
Dog d;
d.speak();
}
int main() {
creating();
return 0;
}
```
输出结果为:
```
Mammal constructor
Dog constructor
wang wang
Dog destructor
Mammal destructor
```
可以看出,当创建Dog对象时,会先调用基类Mammal的构造函数,再调用派生类Dog的构造函数;当调用speak()函数时,会优先调用派生类Dog中的同名函数;当程序结束时,会先调用派生类Dog的析构函数,再调用基类Mammal的析构函数。
阅读全文