c++编写程序声明一个哺乳动物Mammal类,在由此派生出Dog(狗)。要求类中必须包含输出信息的构造函数与析构函数。声明一个 Dog 类的对象,使用程序观察基类和派生类的构造函数和析构函数的调用顺序。
作者:野牛程序员:2024-10-28 11:33:38 C++阅读 2510
c++编写程序声明一个哺乳动物Mammal类,在由此派生出Dog(狗)。要求类中必须包含输出信息的构造函数与析构函数。声明一个 Dog 类的对象,使用程序观察基类和派生类的构造函数和析构函数的调用顺序。
c++编写程序声明一个哺乳动物Mammal类,在由此派生出Dog(狗)。要求类中必须包含输出信息的构造函数与析构函数。声明一个 Dog 类的对象,使用程序观察基类和派生类的构造函数和析构函数的调用顺序。
#include <iostream>
#include <string>
class Mammal {
public:
// 构造函数
Mammal() {
std::cout << "Mammal 构造函数被调用" << std::endl;
}
// 析构函数
virtual ~Mammal() { // 使用 virtual 以确保正确的析构顺序
std::cout << "Mammal 析构函数被调用" << std::endl;
}
};
class Dog : public Mammal {
public:
// 构造函数
Dog() {
std::cout << "Dog 构造函数被调用" << std::endl;
}
// 析构函数
~Dog() {
std::cout << "Dog 析构函数被调用" << std::endl;
}
};
int main() {
std::cout << "创建 Dog 对象..." << std::endl;
Dog myDog; // 创建 Dog 对象,观察构造和析构函数的调用
std::cout << "Dog 对象的生命周期结束..." << std::endl;
return 0; // 当程序结束时,myDog 的析构函数将被调用
}代码说明:
Mammal类:包含构造函数和析构函数。
析构函数使用
virtual关键字,以确保在删除派生类对象时,基类析构函数能被正确调用。Dog类:继承自
Mammal类,包含自己的构造函数和析构函数。main函数:创建一个
Dog对象,程序将输出构造和析构函数的调用顺序。
输出顺序:
运行该程序时,输出的顺序将是:
Mammal 构造函数被调用Dog 构造函数被调用Dog 对象的生命周期结束...Dog 析构函数被调用Mammal 析构函数被调用
这个顺序表明,基类的构造函数先被调用,派生类的构造函数后被调用;而在析构时,派生类的析构函数先被调用,基类的析构函数后被调用。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

