例4.8 含有对象成员的派生类构造函数和析构函数的执行顺序

来源:互联网 发布:绝地求生大逃杀优化差 编辑:程序博客网 时间:2024/05/19 23:56
// 例4.8 含有对象成员的派生类构造函数和析构函数的执行顺序。#include<iostream>using namespace std;class Base{     //声明基类Base  public:    Base(int i){  //基类的构造函数      x = i;      cout<<"Constructing base class \n";    }    ~Base(){      //基类的析构函数      cout<<"Destructing base class \n";    }    void show(){      cout<<"x="<<x<<endl;    }  private:    int x;};class Derived:public Base{  //声明公有派生类Derivedpublic:  Derived(int i):Base(i),d(i){ //派生类的构造函数,缀上要调用的基类构造函数和对象成员构造函数    cout<<"constucting derived class\n";  }  ~Derived(){  //派生类的析构函数    cout<<"destructing derived class \n";  }private:  Base d;  //d为基类的对象,作为派生类的内嵌对象成员};int main(){  Derived obj(5);  obj.show();  return 0;}/*上面程序中有两个类:基类Base和派生类Derived。基类中含有一个需要传递参数的构造函数,用它初始化私有成员x,并显示出一句信息。派生类中含有基类Base的一个对象d。从程序执行的结果分析,构造函数和析构函数的执行顺序与规定的顺序是完全一致的。说明:在派生类中含有多个内嵌对象成员时,调用内嵌对象成员的构造函数顺序由它们在类中声明的顺序确定。*/

阅读全文
0 0