/*
2.02. *Copyright (c) 2016,烟台大学计算机学院
3.03. *All rights reserved.
4. 04. *文件名称:cpp
5. 05. *作 者:孙亚茹
6.06. *完成日期:2016年5月10日
7.07. *版 本 号:v1.0
8. 09. *问题描述:阅读程序,写出执行结果。
9.*/
#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;
}
.学习总结:
阅读以后以为运行结果为:DEF.错误原因是:(1)把共有成员误当成私有成员,以为派生类不能访问。(2)没有看清派生类的私有数据成员类型为继承类,这导致运行结果中A,B没有出现,(3)错误认为继承类的析构函数也应当在执行派生类成员函数之前执行。
知识点总结:
(1)继承类的公有成员函数派生类一样能执行。(2)派生类中不管是执行继承过来的成员函数还是本身的成员函数它们的析构函数都要最后执行,并按照相反的顺序执行.(3)读程序一定要看清各个成员类型,要认真。