.1 分析以下程序的執(zhí)行結(jié)果
#include
class base
{
public:
base(){cout<<"constructing base class"<
class subs:public base
{
public:
subs(){cout<<"constructing sub class"<
void main()
{
subs s;
}
解:
本題說(shuō)明單繼承情況下構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。這里base為基類,subs為派生類。
所以輸出為:
constructing base class
constructing sub class
destructing sub class
destrcuting base class
注意:在單繼承情況下,首先調(diào)用基類的構(gòu)造函數(shù) ,隨后調(diào)用派生類的構(gòu)造函數(shù),析構(gòu)函數(shù)的調(diào)用順序則正好相反。
6.2 分析以下程序的執(zhí)行結(jié)果:
#include
class base
{
int n;
public:
base(int a)
{
cout<<"constructing base class"<
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"<
cout<<"m="<
~subs(){cout<<"destructing sub class"<
void main()
{
subs s(1,2,3);
}
解:
本題說(shuō)明 派生類中含有對(duì)象成員情況下構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。這里base為基類,subs為派生類,subs類的構(gòu)造函數(shù)中含有對(duì)象成員。
所以輸出為:
constrcuting base class
n=1
constructing base class
n=3
constructing sub class
m=2
destructing sub class
destructing base class
destructing base class
注意:當(dāng)派生類中含有對(duì)象成員時(shí),構(gòu)造函數(shù)的調(diào)用順序如下:
1)基類的構(gòu)造函數(shù)
2)對(duì)象成員的構(gòu)造函數(shù)
3)派生類的構(gòu)造函數(shù)
析構(gòu)函數(shù)的調(diào)用順序與之相反
推薦:全國(guó)計(jì)算機(jī)等級(jí)考試一級(jí)筆試模擬試題15套
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |