阅读项目-3

来源:互联网 发布:js什么叫框架 编辑:程序博客网 时间:2024/04/30 18:12
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:刘涛 * 完成日期:2016年5月19日 * 版本号:vc++6.0 *问题描述:阅读项目 */#include <iostream>using namespace std;class Part  //部件类{public:    Part();    Part(int i);    ~Part();private:    int val;};Part::Part(){    val=0;    cout<<"调用Part的默认构造函数:"<<val<<endl;}Part::Part(int i){    val=i;    cout<<"调用Part的构造函数: "<<val<<endl;}Part::~Part(){    cout<<"调用Part的析构函数: "<<val<<endl;}class Whole: public Part{public:    Whole();    Whole(int,int,int,int);    ~Whole();private:    Part one;    Part two;    int data;};Whole::Whole(){    data=0;    cout<<"调用whole的默认构造函数: "<<data<<endl;}Whole::Whole(int p, int i,int j,int k):    Part(p),one(j),two(i),data(k)  //问题2{    cout<<"调用whole的构造函数: "<<data<<endl;}Whole::~Whole(){    cout<<"调用whole的析构函数: "<<data<<endl;}void f(){    Whole w1;    Whole w2(1,2,3,4);}int main(){    f();    return 0;}


运行结果:

结果分析:

调用f()函数,先调用无参数的构造函数,由于Whole是Part的派生类,所以先给Part类赋值,调用无参数的构造函数,输出0,再给Whole类的成员赋值,由于one,two是Part类的,默认值为0,所以也输出0,最后给data赋值。

在Whole类的构造函数中,one,two和i,j调换了位置,所以先输出3,再输出2,然后最后输出4,程序完成后,按相反顺序依次调用析构函数。

 

0 0