【正文】
【參考程序】// includeiostream?!窘忸}思路】① 題目中已給出了類的基本部分,需要增加一個(gè)構(gòu)造函數(shù)來初始化數(shù)據(jù)成員radius?!締栴}分析】本題主要考查類定義的形式、對(duì)象成員訪問和對(duì)象初始化的方法。接著語句3,再調(diào)用構(gòu)造函數(shù),sumnum變?yōu)?0?!窘Y(jié)果分析】程序中語句1對(duì)靜態(tài)成員sumnum進(jìn)行初始化,sumnum得到初值120。return 0。// 語句2Book b2(70)。}int Book∷sumnum=120。Book∷Book(int w){num=w。private:int num。class Book{public:Book(int w)。由于p1在Whole類中先說明,所以先執(zhí)行它所使用的構(gòu)造函數(shù),即類Part的默認(rèn)構(gòu)造函數(shù),接著p2執(zhí)行它所使用的有參構(gòu)造函數(shù),緊接著初始化p3,由于Whole類構(gòu)造函數(shù)的成員初始化列表中沒有子對(duì)象p3進(jìn)行初始化的選項(xiàng),所以執(zhí)行類Part的默認(rèn)構(gòu)造函數(shù),當(dāng)所有子對(duì)象被構(gòu)造完之后,對(duì)象w的構(gòu)造函數(shù)才被執(zhí)行,從而得到前4行輸出結(jié)果,而后4行是執(zhí)行相應(yīng)析構(gòu)函數(shù)的輸出結(jié)果?!窘Y(jié)果分析】程序的Whole類中出現(xiàn)了類Part的3個(gè)對(duì)象pp2和p3,作為該類的數(shù)據(jù)成員,則pp2和p3被稱為子對(duì)象。◆如果X類的構(gòu)造函數(shù)沒有給出成員初始化列表,表明子對(duì)象將使用默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化?!疽c(diǎn)提示】◆當(dāng)建立X類的對(duì)象時(shí),先調(diào)用子對(duì)象的構(gòu)造函數(shù),初始化子對(duì)象,然后才執(zhí)行X類的構(gòu)造函數(shù),初始化X類中的其他成員。}Whole∷~Whole(){coutDestructor of Wholeendl。// 子對(duì)象3 }。// 子對(duì)象1Part p2。 // Whole的無參構(gòu)造函數(shù)~Whole()。class Whole{public:Whole(int i)。當(dāng)程序結(jié)束時(shí),釋放對(duì)象w,析構(gòu)函數(shù)被調(diào)用,輸出第2行結(jié)果。② 程序首先執(zhí)行語句1,創(chuàng)建對(duì)象w,調(diào)用構(gòu)造函數(shù),num得到初值5?!疽c(diǎn)提示】析構(gòu)函數(shù)在釋放對(duì)象時(shí)被自動(dòng)調(diào)用。 // 語句2return 0。int main(){Xx w(5)。} // 構(gòu)造函數(shù)~Xx(){coutdst numendl。class Xx{private:int num。程序接著執(zhí)行語句2,創(chuàng)建對(duì)象y,調(diào)用帶一個(gè)參數(shù)的構(gòu)造函數(shù),輸出第3行結(jié)果。② 程序首先執(zhí)行語句1,創(chuàng)建對(duì)象x,調(diào)用默認(rèn)構(gòu)造函數(shù)?!疽c(diǎn)提示】構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用,具體調(diào)用哪個(gè)構(gòu)造函數(shù)將由編譯系統(tǒng)根據(jù)重載函數(shù)的匹配原則來確定。 // 語句2return 0。}int main(){Test x[2]。}Test∷Test(int n){ coutInit nendl。Test∷Test(){ coutInit defaendl。// 默認(rèn)構(gòu)造函數(shù)Test(int n)。class Test{private:int num。在以下3種情況下,拷貝構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用: ◆當(dāng)用類的一個(gè)對(duì)象去初始化該類的另一個(gè)對(duì)象時(shí); ◆當(dāng)函數(shù)的形參是類的對(duì)象,進(jìn)行形參和實(shí)參結(jié)合時(shí); ◆當(dāng)函數(shù)的返回值是類的對(duì)象,函數(shù)執(zhí)行完成返回調(diào)用者時(shí)。(5) 什么叫做拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)何時(shí)被調(diào)用?【問題解答】拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它的作用是用一個(gè)已經(jīng)存在的對(duì)象去初始化另一個(gè)對(duì)象。this指針是一個(gè)局部量,局部于某個(gè)對(duì)象。(3) 類的實(shí)例化是指創(chuàng)建類的對(duì)象還是定義類?【問題解答】指創(chuàng)建類的對(duì)象。(2) 類定義的一般形式是什么?其成員有哪幾種訪問權(quán)限? 【問題解答】定義類一般形式為: class類名{public:公有數(shù)據(jù)和函數(shù)protected:保護(hù)數(shù)據(jù)和函數(shù)private:私有數(shù)據(jù)和函數(shù)}。程序員可以使用這個(gè)新類型在程序中聲明新的變量,具有類類型的變量稱為對(duì)象。(23) 下面選項(xiàng)中,( C )不是類的成員函數(shù)。A. friend class類名; B. youyuan class類名; C. class friend類名; D. friends class類名; (22) 下面對(duì)友元的錯(cuò)誤描述是( D )。A. 提高效率 B. 深化使用類的封裝性 C. 提高程序的可讀性 D. 提高數(shù)據(jù)的隱蔽性【結(jié)果分析】友元的作用主要是為了提高效率和方便編程,但友元破壞了類的封裝性和隱蔽性,使用時(shí)要權(quán)衡利弊。A. 靜態(tài)數(shù)據(jù)成員 B. 靜態(tài)成員函數(shù) C. 類以外的函數(shù)和數(shù)據(jù) D. 非靜態(tài)數(shù)據(jù)成員【結(jié)果分析】由于靜態(tài)成員函數(shù)沒有this指針,它只能直接訪問該類的靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù)和類以外的函數(shù)和數(shù)據(jù),訪問類中的非靜態(tài)數(shù)據(jù)成員必須通過參數(shù)傳遞方式得到對(duì)象名,然后通過對(duì)象名來訪問。靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)均可操作靜態(tài)數(shù)據(jù)成員。(18) 對(duì)靜態(tài)數(shù)據(jù)成員的不正確描述是( CD )。(17) 關(guān)于靜態(tài)數(shù)據(jù)成員,下面敘述不正確的是( C )。(16) 對(duì)delete運(yùn)算符的下列描述中,( D )是錯(cuò)誤的。(15) 對(duì)new運(yùn)算符的下列描述中,( B )是錯(cuò)誤的。(14) 下列關(guān)于子對(duì)象的描述中,( B )是錯(cuò)誤的。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),this指針就初始化指向該對(duì)象。A. this指針必須顯式說明B. 當(dāng)創(chuàng)建一個(gè)對(duì)象后,this指針就指向該對(duì)象C. 成員函數(shù)擁有this指針D. 靜態(tài)成員函數(shù)擁有this指針。A. 成員函數(shù) B. 構(gòu)造函數(shù) C. 析構(gòu)函數(shù) D. 復(fù)制構(gòu)造函數(shù)(12) 通??截悩?gòu)造函數(shù)的參數(shù)是( C )。(10) 類的析構(gòu)函數(shù)是( D )時(shí)被調(diào)用的。如果一個(gè)類中沒有定義析構(gòu)函數(shù),系統(tǒng)將自動(dòng)生成一個(gè)默認(rèn)析構(gòu)函數(shù)。(9) 下面對(duì)析構(gòu)函數(shù)的正確描述是( AC )。(8) 假定A是一個(gè)類,那么執(zhí)行語句“A a,b(3),*p; ”調(diào)用了( B ) 次構(gòu)造函數(shù)。(7) 下面對(duì)構(gòu)造函數(shù)的不正確描述是( B )。成員函數(shù)的實(shí)現(xiàn),可以放在類體內(nèi),也可以放在類體外。 D.?。?) 關(guān)于成員函數(shù)的說法中不正確的是( C )。(5) 設(shè)MClass是一個(gè)類,dd是它的一個(gè)對(duì)象,pp是指向dd的指針,cc是dd的引用,則對(duì)成員的訪問,對(duì)象dd可以通過( B )進(jìn)行,指針pp可以通過( D )進(jìn)行,引用cc可以通過( B )進(jìn)行。(4) 關(guān)于類和對(duì)象的說法( C )是錯(cuò)誤的。保護(hù)成員具有公有成員和私有成員的雙重性質(zhì),可以被該類或派生類的成員函數(shù)或友元函數(shù)引用。公有成員定義了類的外部接口。(3) 在類定義的外部,可以被任意函數(shù)訪問的成員有( C )。關(guān)鍵字public、protected 和private以后的成員的訪問權(quán)限分別是公有、保護(hù)和私有的,所有成員默認(rèn)定義為private的。(2)