資源描述:
《面向?qū)ο蟪绦蛟O(shè)計復(fù)習》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1.類的默認的拷貝構(gòu)造函數(shù)()。B.僅當未定義拷貝構(gòu)造函數(shù)時存在2.定義析構(gòu)函數(shù)時,應(yīng)該注意()C.無形參,也不可重載3.一個類的構(gòu)造函數(shù)()。B.允許重載4.考慮函數(shù)原型voidtest(inta,intb=7,charch='*')下面的函數(shù)調(diào)用中,錯誤的調(diào)用是()C.test(0,'#')5.采用函數(shù)重載的目的在于()。D.提高可讀性6.一個類的靜態(tài)數(shù)據(jù)成員所表示的屬性,確切的說是()。C.只是類的屬性7.假定AB為一個類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。C.AB(AB&X)8.在C++中,打開一個文件,就是將這個文
2、件與一個()建立關(guān)聯(lián);關(guān)閉一個文件,就是撤銷這種關(guān)聯(lián)。B.流對象9.一個()允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)成員或某些成員函數(shù)中的參數(shù)及返回值等是任意類型。C.類模板10.關(guān)于new運算符的下列描述中,()是錯的。D.使用它創(chuàng)建對象數(shù)組時可以調(diào)用帶參數(shù)的構(gòu)造函數(shù)。1.當在try塊中拋出異常后,程序最后可以回到try塊中繼續(xù)執(zhí)行后面的語句。()2.派生類的成員函數(shù)可以直接訪問基類的所有成員。()3.虛擬繼承是為了避免派生類中多次繼承基類的某些數(shù)據(jù)成員而專門設(shè)置的。(√)4.帶有純虛函數(shù)的類是抽象類,不能聲明一個抽象類的
3、指針和引用。()5.inline函數(shù)表示編譯器一定會將函數(shù)體直接插入到調(diào)用此函數(shù)的地方,這樣可以加快程序的運行速度。()6.運算符被重載時,它們的優(yōu)先級與結(jié)合性可以重新設(shè)置。()7.若類A是類B的友員類,且類B是類C的友員類,那么類A也是類C的友員類。()8.靜態(tài)成員函數(shù)可以直接訪問當前對象的成員數(shù)據(jù)和成員函數(shù)。()9.某類中的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。(√)10.派生類對象的地址可以賦給指向基類的指針。(√)改錯:SillyClass(int&i):ten(10){refI=i;}改錯:增加拷貝構(gòu)造函
4、數(shù)改錯:友元函數(shù)改錯:靜態(tài)成員函數(shù)改錯:函數(shù)重載改錯:公共繼承1.(4分)簡述函數(shù)模板和模板函數(shù)的區(qū)別。答:函數(shù)模板是模板的定義,定義中使用通用類型參數(shù),不是一個實實在在的函數(shù)定義。(2分)模板函數(shù)是實實在在的函數(shù)定義,是函數(shù)模板的實例化。它由編譯系統(tǒng)在遇見具體的函數(shù)調(diào)用時所生成,具有程序代碼。(2分)2.(6分)面向?qū)ο缶幊痰娜齻€主要特點是什么?C++中是如何體現(xiàn)的?答:(1)面向?qū)ο蠓庋b(或信息實現(xiàn)隱藏):C++通過在類中設(shè)定存取控制權(quán)限,使外界無法訪問類的私有和保護數(shù)據(jù)以實現(xiàn)信息隱藏,這些成員是保護的,它們被有效地屏蔽,以
5、防外界的干擾和誤操作。(2)繼承:繼承就是從父輩處得到屬性和行為特征,繼承是C++語言的一種重要機制,該機制自動地為一個類提供來自另一個類的操作和數(shù)據(jù)結(jié)構(gòu),這使得程序員只需在新類中定義已有類中沒有的成分來建立新類。(3)多態(tài)性:多態(tài)性就是為同一個函數(shù)和操作符定義幾個版本5,根據(jù)具體情況決定執(zhí)行哪個版本。運行時能依據(jù)其類型確認調(diào)用哪個函數(shù)的能力,稱為遲后聯(lián)編或滯后聯(lián)編。編譯時能確定哪個重載函數(shù)被調(diào)用的稱為先期聯(lián)編。編譯時的多態(tài)性通過函數(shù)重載完成;運行時的多態(tài)性通過虛函數(shù)實現(xiàn)。1.(12分)運行結(jié)果:classA{public:A(
6、inti){cout<<"ConstructingA"<
7、s.b<usingnamespacestd;classOBJ{public:OBJ(){cout<<"InOBJ";}};classBase1{publi
8、c:Base1(){cout<<"InBase1";}};classBase2{public:Base2(){cout<<"InBase2";}};classBase3{public:Base3(){cout<<"InBase3";}};classB