C++运算结果以及步骤简析

来源:百度知道 编辑:UC知道 时间:2024/07/05 20:47:16
#include<iostream>
using namespace std;
class Mammal
{
public:
Mammal(){cout<<"Mammal"<<endl;}
~Mammal(){cout<<"~Mammal"<<endl;}
};
class Dog:public Mammal
{
public:
Dog(){cout<<"Dog"<<endl;}
~Dog(){cout<<"~Dog"<<endl;}
};
int main()
{
Dog d;
return 0;
}

结果:
Mammal
Dog
~Dog
~Mammal

Dog d; 这句话产生一个Dog类的对象d,会调用Dog类的默认构造函数,而Dog 又继承自类Mamal,所以要先调用父类构造函数,即打印出Mammal。 然后才开始接着执行子类Dog的构造函数部分,即输出Dog。

程序结束的时候会释放内存,所以调用Dog类的析构函数,此时先调用子类的析构函数,会输出~Dog,接着调用父类的析构函数,会输出~Mammal。

主要是考虑父类和子类对象在构造函数和析构函数的执行顺序。

这是个解释构造函数和析构函数的例子 从主函数看 先定义了一个DOG类调用DOG类声明函数 但调用时候发现DOG类是public MAMMAL类的 先调用mammal类构造函数 输出mammal 然后才调用DOG类构造函数输出DOG 调用结束就开始处理战场 调用DOG类析构函数 输出`DOG 再调用MAMMAL析构函数输出`mamal 第一句Dog d; 就结束了 return 0; 只是返回一个0 不输出任何东西