c++编写程序声明一个哺乳动物Mammal类,在由此派生出Dog(狗)。要求类中必须包含输出信息的构造函数与析构函数。声明一个 Dog 类的对象,使用程序观察基类和派生类的构造函数和析构函数的调用顺序。
作者:野牛程序员:2024-10-28 11:33:38 C++阅读 2438
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
