/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:score.cpp
*作 者:惠睿
*完成日期:2015年5月21日
*版 本 号:v1.0
*
*问题描述:阅读程序,写出程序的运行结果并理解。
*程序输入:无输入。
*程序输出:输出调用函数后的值。
*/
#include <iostream>
using namespace std;
class Data
{
public:
Data(int i):x(i)
{
cout<<"A";
}
~Data()
{
cout<<"B";
}
private:
int x;
};
class Base
{
public:
Base(int i):b1(i)
{
cout<<"C";
}
~Base()
{
cout<<"D";
}
private:
int b1;
};
class Derived:public Base
{
public:
Derived (int i,int j):Base(i),d1(j)
{
cout<<"E";
}
~Derived()
{
cout<<"F";
}
private:
Data d1;
};
int main()
{
Derived obj(1,2);
return 0;
}
运行结果:
知识点总结:先调用 Derived 类的构造函数,Derived 类是 Base 类的子类,所以会先调用 Base 类的构造函数,b1=1, 输出 C ;此时开始对 d1 进行初始化, d1 是 Data 类的对象,所以此时会调用 Data 类的构造函数, x=2 , 输出 A ;此时 Derived 类的构造函数调用完毕,输出 E ;此时会执行 Derived 类的析构函数,输出 F ;此时会执行 Data 类的析构函数,输出 B ;此时会执行 Base 类的析构函数,输出 D 。