資源描述:
《c ii程序習(xí)題及其解答》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、6.3思考題1.結(jié)構(gòu)和類有什么區(qū)別?如果把程序中定義結(jié)構(gòu)的關(guān)鍵字struct直接改成class,會(huì)有什么問(wèn)題?用教材上的一個(gè)例程試一試,想一想做什么修改能使程序正確運(yùn)行?【解答】結(jié)構(gòu)是數(shù)據(jù)的封裝,類是數(shù)據(jù)和操作的封裝??梢园呀Y(jié)構(gòu)看成是類的特例。結(jié)構(gòu)和類都可以用關(guān)鍵字struct或class定義。區(qū)別是,struct定義的結(jié)構(gòu)或類的全部成員都是公有的,用class定義的結(jié)構(gòu)或類不做聲明的成員是私有的。若把struct改成class,只需要把全部成員定義為public就可以了。2.有說(shuō)明classA{inta;doublex;public:funMemb
2、er();};Aa1,a2,a3;編譯器為對(duì)象a1、a2和a3開(kāi)辟了什么內(nèi)存空間?它們有各自的funMember函數(shù)的副本嗎?C++通過(guò)什么機(jī)制調(diào)用類的成員函數(shù)?【解答】開(kāi)辟的存儲(chǔ)空間有a1.a,a1.x,a2.a,a2.x,a3.a,a3.x。各對(duì)象沒(méi)有funMember函數(shù)的副本,C++通過(guò)this指針調(diào)用成員函數(shù)。3.C++提供了默認(rèn)版本的構(gòu)造函數(shù),為什么還需要用戶自定義構(gòu)造函數(shù)?編寫(xiě)一個(gè)驗(yàn)證程序,說(shuō)明自定義構(gòu)造函數(shù)的必要性?!窘獯稹款惖哪J(rèn)構(gòu)造函數(shù)可以建立基本類型數(shù)據(jù)成員的存儲(chǔ)空間?;谝韵聝蓚€(gè)原因,需要用戶定義構(gòu)造函數(shù):(1)對(duì)數(shù)據(jù)成員的值
3、做指定初始化;(2)類的數(shù)據(jù)是由指針管理的堆。程序略。4.試從定義方式、訪問(wèn)方式、存儲(chǔ)性質(zhì)和作用域分析類的一般數(shù)據(jù)成員和靜態(tài)數(shù)據(jù)成員的區(qū)別,并編寫(xiě)一個(gè)簡(jiǎn)單程序驗(yàn)證它?!窘獯稹慷x方式訪問(wèn)方式存儲(chǔ)性質(zhì)作用域一般數(shù)據(jù)成員類中定義對(duì)象.數(shù)據(jù)成員局部數(shù)據(jù)由訪問(wèn)屬性public,protected,private決定靜態(tài)數(shù)據(jù)成員類中聲明,類外定義對(duì)象.數(shù)據(jù)成員類::數(shù)據(jù)成員全局?jǐn)?shù)據(jù)程序略。355.試從定義方式、調(diào)用方式分析常成員函數(shù)、靜態(tài)成員函數(shù)和友員函數(shù)的區(qū)別??疾旖滩牡睦?-15,若classGoods的指針域Goods*next;被聲明為私有(priva
4、te)成員,程序會(huì)出現(xiàn)什么錯(cuò)誤?做什么最小修改能使程序正確運(yùn)行?請(qǐng)你試一試?!窘獯稹慷x方式調(diào)用方式常成員函數(shù)函數(shù)原型以const做后綴this指針被約束為指向常量的常指針與一般成員函數(shù)調(diào)用形式相同對(duì)數(shù)據(jù)成員只讀靜態(tài)成員函數(shù)以static做函數(shù)原型前綴沒(méi)有this指針通過(guò)類或?qū)ο笳{(diào)用用于操作靜態(tài)數(shù)據(jù)成員友員函數(shù)以friend做函數(shù)原型前綴沒(méi)有this指針通過(guò)參數(shù)訪問(wèn)對(duì)象可以訪問(wèn)對(duì)象的不同屬性的成員在例6-15中,若把next聲明為私有數(shù)據(jù)成員,只須把有關(guān)指針操作的函數(shù)定義為友員函數(shù)就可以了:friendvoidpurchase(Goods*&f,Go
5、ods*&r,intw);friendvoidsale(Goods*&f,Goods*&r);6.設(shè)有classM{inta;};classN{Mm;intb;voidfun(){/*……*/}};intmain(){Nn;N*p=&n;/*……*/}描述在N::fun中如何訪問(wèn)M類的數(shù)據(jù)成員a;在main函數(shù)中又如何訪問(wèn)對(duì)象n的全部數(shù)據(jù)成員?【解答】在N::fun中訪問(wèn)M類的數(shù)據(jù)成員a的形式是:m.a在main函數(shù)中訪問(wèn)M類的數(shù)據(jù)成員的形式是:n.b,n.m.a6.4編程題1.定義一個(gè)Book(圖書(shū))類,在該類定義中包括數(shù)據(jù)成員:bookname(
6、書(shū)名)、price(價(jià)格)和number(存書(shū)數(shù)量);成員函數(shù):display()顯示圖書(shū)的情況;borrow()將存書(shū)數(shù)量減1,并顯示當(dāng)前存書(shū)數(shù)量;restore()將存書(shū)數(shù)量加1,并顯示當(dāng)前存書(shū)數(shù)量。在main函數(shù)中,要求創(chuàng)建某一種圖書(shū)對(duì)象,并對(duì)該圖書(shū)進(jìn)行簡(jiǎn)單的顯示、借閱和歸還管理?!窘獯稹?includeusingnamespacestd;classBook{public:voidsetBook(char*,double,int);voidborrow();voidrestore();voiddisplay();privat
7、e:35charbookname[40];doubleprice;intnumber;};//在類外定義Book類的成員函數(shù)voidBook::setBook(char*name,doublepri,intnum){strcpy(bookname,name);price=pri;number=num;}voidBook::borrow(){if(number==0){cout<<"已沒(méi)存書(shū),退出!"<
8、estore(){number=number+1;cout<<"還一次,現(xiàn)存書(shū)量為:"<