程序阅读2

来源:互联网 发布:手机免费网络电话软件 编辑:程序博客网 时间:2024/06/07 20:04

程序:

//程序阅读2#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//派生类Whole{public:    Whole();    Whole(int,int,int,int);    ~Whole();private:    Part one;//Part类,需调用默认构造函数    Part two;//Part类,需调用默认构造函数    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)  //先调用Part类的构造3次,在调用本类的构造1次{    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;}/*先分析程序的执行结果调用whole的默认构造函数:0调用Part的构造函数:1调用Part的构造函数:2调用Part的构造函数:3调用whole的构造函数:4调用whole的析构函数:4调用Part的析构函数:3调用Part的析构函数:2调用Part的析构函数:1调用whole的析构函数:0*//*自己想的答案少了三个Part默认构造函数的运用还有随之执行的析构函数派生类中私有成员是Part型时调用默认构造函数每次调用构造函数时都要在最后执行析构函数,且先用的构造函数最后执行析构函数*//*问题2把one和two调了个个儿,就有三个errors。*/

结果:

            

体会:

/*自己想的答案少了三个Part默认构造函数的运用还有随之执行的析构函数派生类中私有成员是Part型时调用默认构造函数每次调用构造函数时都要在最后执行析构函数,且先用的构造函数最后执行析构函数*/

0 0
原创粉丝点击