資源描述:
《繼承與派生C++試題.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、繼承與派生類(lèi)知識(shí)要點(diǎn)1.1.?掌握繼承和派生的定義,派生類(lèi)的定義方法。(1)掌握繼承的兩種類(lèi)型:?jiǎn)卫^承和多繼承。(2)掌握private,public,protected三種繼承方式的特點(diǎn)。繼承方式?jīng)Q定了基類(lèi)中的成員在派生類(lèi)中的屬性。三種繼承方式的共同點(diǎn):基類(lèi)的private成員在派生類(lèi)中不可見(jiàn)。區(qū)別:對(duì)于私有繼承,基類(lèi)的public、protected成員在派生類(lèi)中作為private成員;對(duì)于公有繼承,基類(lèi)的public、protected成員在派生類(lèi)中訪問(wèn)屬性不變;對(duì)于保護(hù)繼承,基類(lèi)的public、protected成員在派生類(lèi)中作為protected成
2、員。(3)掌握派生類(lèi)中的構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用。基類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能繼承,所以必要時(shí)在派生類(lèi)中定義自己的構(gòu)造函數(shù)和析構(gòu)函數(shù)。派生列的構(gòu)造函數(shù)完成基類(lèi)中新增數(shù)據(jù)成員和基類(lèi)數(shù)據(jù)成員的初始化,基類(lèi)數(shù)據(jù)成員的初始化通過(guò)基類(lèi)構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)。(4)掌握派生類(lèi)的同名覆蓋規(guī)則。(5)掌握賦值兼容規(guī)則。基類(lèi)對(duì)象可以使用公有派生類(lèi)對(duì)象來(lái)代替,包括:派生類(lèi)對(duì)象可以賦值給基類(lèi)對(duì)象;派生類(lèi)對(duì)象可以初始化基類(lèi)對(duì)象的引用;基類(lèi)類(lèi)型指針可以指向派生類(lèi)對(duì)象。2.2.?掌握多重繼承的概念、定義方法、多重繼承派生類(lèi)構(gòu)造函數(shù)的執(zhí)行順序。派生類(lèi)構(gòu)造函數(shù)的執(zhí)行順序是先執(zhí)行所有基類(lèi)的構(gòu)造函數(shù)(
3、順序按照定義派生類(lèi)時(shí)指定的各基類(lèi)順序),在執(zhí)行對(duì)象成員所在類(lèi)的構(gòu)造函數(shù)(順序按照他們?cè)陬?lèi)中的聲明順序),最后執(zhí)行派生類(lèi)構(gòu)造函數(shù)體中的內(nèi)容。3.3.?掌握虛基類(lèi)的概念和定義方法。在多重繼承中,如果多條繼承路徑上有一個(gè)公共的基類(lèi),則在這些路徑的匯合點(diǎn)上的派生類(lèi)會(huì)產(chǎn)生來(lái)自不同路徑的公共基類(lèi)的多個(gè)拷貝,如果用virtual把公共基類(lèi)定義成虛基類(lèi),則只會(huì)保留公共基類(lèi)的一個(gè)拷貝。9.2典型例題分析與解答例題1:下列對(duì)派生類(lèi)的描述中,()是錯(cuò)誤的。A.A.?一個(gè)派生類(lèi)可以作為另一個(gè)派生類(lèi)的基類(lèi)B.B.?派生類(lèi)至少有一個(gè)基類(lèi)C.C.?派生類(lèi)的成員除了它自己的成員外,還包含了
4、它的基類(lèi)成員D.D.派生類(lèi)中繼承的基類(lèi)成員的訪問(wèn)權(quán)限到派生類(lèi)保持不變答案:D分析:一個(gè)派生類(lèi)可以作為另一個(gè)派生類(lèi)的基類(lèi)。無(wú)論是單繼承還是多繼承,派生類(lèi)至少有一個(gè)基類(lèi)。派生類(lèi)的成員除了它自己的成員外,還包含了它的基類(lèi)成員。派生類(lèi)中繼承的基類(lèi)成員的訪問(wèn)權(quán)限到派生類(lèi)受繼承方式影響的,對(duì)于私有繼承,基類(lèi)的public,protected成員在派生類(lèi)中作為private成員;對(duì)于公有繼承,基類(lèi)的public,protected成員在派生類(lèi)中訪問(wèn)屬性不變;對(duì)于保護(hù)繼承,基類(lèi)的public、protected成員在派生類(lèi)中作為protected成員。例題2:派生類(lèi)的對(duì)象對(duì)
5、它的哪一類(lèi)基類(lèi)成員是可以訪問(wèn)的?()A.公有繼承的基類(lèi)的公有成員B.公有繼承的基類(lèi)的保護(hù)成員C.公有繼承的基類(lèi)的私有成員D.保護(hù)繼承的基類(lèi)的公有成員答案:A分析:公有繼承的基類(lèi)的公有成員在派生類(lèi)中保持公有訪問(wèn)權(quán)限,所以派生類(lèi)對(duì)象可以訪問(wèn)它;公有繼承的基類(lèi)的保護(hù)成員在派生類(lèi)中保持保護(hù)訪問(wèn)權(quán)限,所以派生類(lèi)對(duì)象不可以訪問(wèn)它;基類(lèi)的私有成員不能被派生到派生類(lèi)中,所以派生類(lèi)對(duì)象不可以訪問(wèn)它;保護(hù)繼承的基類(lèi)的公有成員在派生類(lèi)中變成保護(hù)的訪問(wèn)權(quán)限,所以派生類(lèi)對(duì)象不可以訪問(wèn)它。?例題3:關(guān)于多繼承二義性的描述,()是錯(cuò)誤的。A.A.派生類(lèi)的多個(gè)基類(lèi)中存在同名成員時(shí),派生類(lèi)對(duì)
6、這個(gè)成員訪問(wèn)可能出現(xiàn)二義性B.B.?一個(gè)派生類(lèi)是從具有共同的間接基類(lèi)的兩個(gè)基類(lèi)派生來(lái)的,派生類(lèi)對(duì)該公共基類(lèi)的訪問(wèn)可能出現(xiàn)二義性C.C.?解決二義性最常用的方法是作用域運(yùn)算符對(duì)成員進(jìn)行限定D.D.?派生類(lèi)和它的基類(lèi)中出現(xiàn)同名函數(shù)時(shí),將可能出現(xiàn)二義性答案:D分析:出現(xiàn)二義性有兩種情況:調(diào)用不同基類(lèi)的相同成員時(shí)可能出現(xiàn)二義性;訪問(wèn)共同基類(lèi)的成員時(shí)可能出現(xiàn)二義性。消除二義性的方法是采用作用域運(yùn)算符。派生類(lèi)和它的基類(lèi)中出現(xiàn)同名函數(shù)時(shí),不可能出現(xiàn)二義性。?例題4:多繼承派生類(lèi)構(gòu)造函數(shù)構(gòu)造對(duì)象時(shí),()被最先調(diào)用。A.派生類(lèi)自己的構(gòu)造函數(shù)B.虛基類(lèi)的構(gòu)造函數(shù)C.非虛基類(lèi)的構(gòu)
7、造函數(shù) D.派生類(lèi)中子對(duì)象類(lèi)的構(gòu)造函數(shù)答案:B分析:多繼承派生類(lèi)構(gòu)造函數(shù)構(gòu)造對(duì)象時(shí),構(gòu)造函數(shù)的調(diào)順序是:虛基類(lèi)的構(gòu)造函數(shù),派生類(lèi)中子對(duì)象類(lèi)的構(gòu)造函數(shù),派生類(lèi)自己的構(gòu)造函數(shù)。?例題5:C++類(lèi)體系中,能被派生類(lèi)繼承的是()。A.構(gòu)造函數(shù)B.虛函數(shù)C.析構(gòu)函數(shù)D.友元函數(shù)答案:B分析:C++類(lèi)體系中,構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)是不能被派生類(lèi)繼承的.?例題6:設(shè)有基類(lèi)定義:classCbase{private:inta;protected:intb;public:intc;};派生類(lèi)采用何種繼承方式可以使成員變量b成為自己的私有成員()A.私有繼承B.保護(hù)繼承C
8、.公有繼承D.私有、保護(hù)、公有均可答案:A分析:私有