计算机等级考试二级C++习题与解析:继承和派生

来源: 作者: 时间:2007-07-11 点击:

.1 分析以下程序的执行结果 
#include 
class base 

public: 
base(){cout<<"constructing base class"<~base(){cout<<"destructing base class"<}; 
class subs:public base 

public: 
subs(){cout<<"constructing sub class"<~subs(){cout<<"destructing sub class"<}; 
void main() 

subs s; 

解: 
本题说明单继承情况下构造函数和析构函数的调用顺序。这里base为基类,subs为派生类。 
所以输出为: 
constructing base class 
constructing sub class 
destructing sub class 
destrcuting base class 
注意:在单继承情况下,首先调用基类的构造函数 ,随后调用派生类的构造函数,析构函数的调用顺序则正好相反。

6.2 分析以下程序的执行结果: 
#include 
class base 

int n; 
public: 
base(int a) 

cout<<"constructing base class"<n=a; 
cout<<"n="<} 
~base(){cout<<"destructing base class"<}; 
class subs:public base 

base bobj; 
int m; 
public: 
subs(int a,int b,int c):base(a),bobj(c) 

cout<<"constructing sub cass"<m=b; 
cout<<"m="<} 
~subs(){cout<<"destructing sub class"<}; 
void main() 

subs s(1,2,3); 

解: 
本题说明 派生类中含有对象成员情况下构造函数和析构函数的调用顺序。这里base为基类,subs为派生类,subs类的构造函数中含有对象成员。 
所以输出为: 
constrcuting base class 
n=1 
constructing base class 
n=3 
constructing sub class 
m=2 
destructing sub class 
destructing base class 
destructing base class 
注意:当派生类中含有对象成员时,构造函数的调用顺序如下: 
1)基类的构造函数 
2)对象成员的构造函数 
3)派生类的构造函数 

析构函数的调用顺序与之相反

6.3 分析以下程序的执行结果 
#include 
class A 

public: 
int n; 
}; 
class B:public A{}; 
class C:public A{}; 
class D:public B,public C 

int getn(){return B::n;} 
}; 
void main() 

D d; 
d.B::n=10; 
d.C::n=20; 
cout<


     [收藏] [推荐] [评论] [打印] [关闭]
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册