cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3

cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3

 

//派生类的构造函数和析构函数
//派生类的构造函数(执行步骤)
//--执行基类的构造函数
//--执行成员对象的构造函数
//--执行派生类的构造函数

//父类,子类
//构造函数与析构函数不能继承

//派生类的析构函数
//--对派生类新增普通成员进行清理
//--调用成员对象的析构函数
//--调用基类析构函数

没有看到析构执行过程,参考如下链接

https://blog.csdn.net/txwtech/article/details/103978929

 

复制代码
#include <iostream>//txwtech,cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3
using namespace std;

enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBRMAN,LAB};

class Mammal//哺乳动物
{
public:
    Mammal();
    ~Mammal();
    //存取器成员函数
    int GetAge() const { return itsAge; }
    void SetAge(int age) { itsAge = age; }
    int GetWeight() const { return itsWeight; }
    void SetWeight(int weight) { itsWeight = weight; }

    void Speak() const { cout << "Mammal的声音!\n"; }
    void Sleep() const { cout << "shhh,我正在睡觉"; }

protected:
    int itsAge;
    int itsWeight;

};
class Dog:public Mammal
{
public:
    Dog();
    ~Dog();
    BREED GetBreed() const { return itsBreed; }
    void SetBreed(BREED breed) { itsBreed = breed; }

    void WagTail() const { cout << "Tail wagging...\n" << endl; }
    void BegForFood() const { cout << "beging for food...\n"; }


private:
    BREED itsBreed;

};
Mammal::Mammal():itsAge(3),itsWeight(5)
{
    cout << "Mammal的构造函数正在被调用..." << endl;
}
Mammal::~Mammal()
{
    cout << "Mammal的析构函数被调用。。。" << endl;
}
Dog::Dog() :itsBreed(GOLDEN)
{
    cout << "Dog的构造函数被调用" << endl;
}
Dog::~Dog()
{
    cout << "Dog的析构函数被调用" << endl;
}


int main()
{

    Dog Fido;//狗是小子
    Fido.Speak();
    Fido.WagTail();
    cout << "Fido is: " << Fido.GetAge() << "years old" << endl;
    //getchar();
    //system("pause");
    return 0;
}
复制代码
posted @   txwtech  阅读(382)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示