当前位置:首页 C++ > 正文

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 的析构函数将被调用
}

代码说明:

  1. Mammal

    • 包含构造函数和析构函数。

    • 析构函数使用 virtual 关键字,以确保在删除派生类对象时,基类析构函数能被正确调用。

  2. Dog

    • 继承自 Mammal 类,包含自己的构造函数和析构函数。

  3. main 函数

    • 创建一个 Dog 对象,程序将输出构造和析构函数的调用顺序。

输出顺序:

运行该程序时,输出的顺序将是:

  1. Mammal 构造函数被调用

  2. Dog 构造函数被调用

  3. Dog 对象的生命周期结束...

  4. Dog 析构函数被调用

  5. Mammal 析构函数被调用

这个顺序表明,基类的构造函数先被调用,派生类的构造函数后被调用;而在析构时,派生类的析构函数先被调用,基类的析构函数后被调用。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++
  • 最新推荐

    热门点击