首页 > 其他分享 >观察基类与派生类的构造函数与析构函数的调用顺序

观察基类与派生类的构造函数与析构函数的调用顺序

时间:2023-04-12 20:57:24浏览次数:37  
标签:cout 与析构 Dog 基类 Mammal include 构造函数

一、设计思路

1.定义一个哺乳动物类Mammal,

2.派生出一个狗类Dog,

3.定义一个dog类的对象,通过代码的执行顺序来判断观察观察基类与派生类的构造函数与析构函数的调用顺序。

二、程序流程图。

 

 

 三、代码实现。

#pragma once
class Mammal
{
public:
Mammal();
~Mammal();
};

#include "Mammal.h"
#include<iostream>
using namespace std;
Mammal::Mammal()
{
cout << "已构造Mammal" << endl;
}


Mammal::~Mammal()
{
cout << "已析构Mammal" << endl;
}

#pragma once
#include"Mammal.h"
#include<iostream>
using namespace std;
class Dog :public Mammal
{
public:
Dog();
~Dog();
};

#include "Dog.h"


Dog::Dog()
{
cout << "已构造Dog" << endl;
}


Dog::~Dog()
{
cout << "已析构Dog" << endl;
}

#include<iostream>
#include<string>
#include"Dog.h"
using namespace std;
int main()
{
Dog a;
}

 

标签:cout,与析构,Dog,基类,Mammal,include,构造函数
From: https://www.cnblogs.com/luoqingci/p/17311196.html

相关文章

  • 构造函数与默认构造函数
    钟表类#include<iostream>usingnamespacestd;classclock{public:clock(inth,intm,ints);clock();voidsettime(inth,intm,ints);voidshowtime();private: inthour,minute,second;};clock::clock(inth,intm,ints):hour(h),minute(m),second(s){}clock::cloc......
  • 以阿里巴巴推荐的使用 ThreadPoolExecutor 构造函数自定义参数的方式来创建线程池
    importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit;publicclassThreadPoolExecutorDemo{privatestaticfinalintCORE_POOL_SIZE=5;privatestaticfinalintMAX......
  • 定义一个基类Base,有两个公有成员函数fn1,fn2,私有派生出Derived类,如何通过Derived类
    定义一个基类Base,有两个公有成员函数fn1,fn2,私有派生出Derived类,如何通过Derived类的对象调用基类的函数fn1。#include<bits/stdc++.h>usingnamespacestd;classBase{public: intfn1(){return0;} intfn2(){return0;}};classDerived:privateBase{publi......
  • 定义一个基类Object,有数据成员weight及相应的操作函数,由此派生出Box类,增加数据成员hei
    定义一个基类Object,有数据成员weight及相应的操作函数,由此派生出Box类,增加数据成员height和width及相应的操作函数,声明一个Box对象,观察构造函数与析构函数的调用顺序。#include<bits/stdc++.h>usingnamespacestd;classObject{protected: doubleweight;public: Object(......
  • C++派生类里析构函数和构造函数的调用顺序
    C++派生类里析构函数和构造函数的调用顺序1.定义一个哺乳类Mammal,在由此派生出狗类Dog,定义一个Dog类的对象,观察基类和派生类的构造函数与析构函数的调用顺序。#include<bits/stdc++.h>usingnamespacestd;classMammal{public: Mammal(){ cout<<"constructedM"<<e......
  • C++构造函数的调用
    对象特性---构造函数和析构函数构造函数---没有回值也不写void---函数值和类名相同---构造函数可以有参数,因此可以发生重载---程序在调用对象的时候自动调用构造,无须手动调用,只能调用一次析构函数语法---析构函数,没有返回值也不写void---函数名和类名也相同,在名称前加上符号~---......
  • 对象 (构造函数)
    创建对象三种方法字面量创建创建对象newObjectnotice构造函数创建对象?构造函数其实就是创建一个函数的母亲,用new母亲()可以创建很多儿子构造函数必须以大写字母开头构造函数的函数体不需要写return只能用new来创建新儿子函数js中几乎所有的数据都可基于构造函......
  • Python中的抽象基类介绍
        从上一篇文章(Python中鸭子类型与多态介绍)中,我们了解到了python的鸭子类型和多态。继承提供了多态的基础,而多态则使继承更加灵活和强大。那么今天,让我们再来一起了解一下python里面的抽象基类。Python中的抽象基类(AbstractBaseClasses,简称abc)是一种特殊的类,它用于定义一......
  • C++逆向分析——构造函数和析构函数
    构造函数与析构函数构造函数structStudent{inta;intb; Student(){printf("Look.");} voidInit(inta,intb){this->a=a;this->b=b;} };如上代码中,我们发现了存在一个函数,这个函数没有返回类型并且与结构体名称一样,那这段函数在什么......
  • 抽象基类
    ABC类全称是AbstractBaseClasses抽象基类可以通过ABC派生来简单创建抽象基类的特点:基类不应允许初始化接口方法未实现时报告相关错误可以把抽象基类想象成建筑的设计图纸,然后子类按图施工abc模块提供了一个元类ABCMeta可定义抽象类还有一个工具类ABC可有以继承的方......