C++面向對象技術復習題匯總(含答案)_第1頁
C++面向對象技術復習題匯總(含答案)_第2頁
C++面向對象技術復習題匯總(含答案)_第3頁
C++面向對象技術復習題匯總(含答案)_第4頁
C++面向對象技術復習題匯總(含答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C++面向對象技術復習題匯總(含答案)C++面向對象技術復習題匯總(含答案)C++面向對象技術復習題匯總(含答案)xxx公司C++面向對象技術復習題匯總(含答案)文件編號:文件日期:修訂次數:第1.0次更改批準審核制定方案設計,管理制度面向對象程序設計C++復習資料與答案第一、二、六、七章習題一、選擇題1、系統(tǒng)約定C++源程序文件名的缺省的擴展名為( )A、bcc B、c++ C、cpp D、vcc2、面向對象的程序設計將數據與( )放在一起,作為一個相互依存、不可分割的整體來處理。A、對數據的操作 B、信息 C、數據隱藏 D、數據抽象3、當一個函數無返回值時,函數的類型應定義為( )A、void B、任意 C、int D、無4、對于C++的函數,正確的敘述是:A、函數的定義不能嵌套,但函數的調用可以嵌套B、函數的定義不能嵌套,但函數的調用不能嵌套C、函數的定義和調用都不能嵌套D、函數的定義和調用都可以嵌套5、下列語句中錯誤的是( )A、int*p=newint(10); B、int*p=newint[10]C、int*p=newint; D、int*p=newint[40](0);6、假設已經有定義:constchar*constname=”chen”;,下面的語句中正確的是:( )A、name[3]=’a’; B、name=”lin”;C、name=newchar[5]; D、cout<<name[3];7、假設已經定義:char*constname=”chen”;,下面的語句中正確的是:( )A、name[3]=’q’; B、name=”lin”;C、name=newchar[5]; D、name=newchar(‘q’);8、假設已經定義:constchar*name=”chen”;,下面的語句中錯誤的是:( )A、name[3]=’q’; B、name=”lin”;C、name=newchar[5]; D、name=newchar(‘q’);9、下面的類型聲明中正確的是:( )A、int&a[4]; B、int&*p; C、int&&q D、inti,*p=&i;10、假設定義了函數模板( ) template<classT> Tmax(Tx,Ty){return(x>y)x:y;}并定義了inti;charc;錯誤的調用語句是:( )A、max(i,i) B、max(c,c) C、max((int)c,i); D、max(i,c)11、模板的使用是為了( )A、提高代碼的可重用性 B、提高代碼的運行效率 C、加強類的封裝性 D、實現多態(tài)性12、設有二個語句:intx[‘a’];cin>>x;則編譯器認為( )A、說明語句intx[‘a’]錯 B、二個語句都錯C、語句cin>>x錯 D、二個語句正確,沒有語法錯13、設有語句:voidf(inta[10],int&x);inty[10],*py=y,n;則對函數f的正確調用語句是( )A、f(py[10],n); B、f(py,n) C、f(*py,&n) D、f(py,&n)14、在C++中實現封裝是借助于( )A、枚舉 B、類 C、數組 D、函數15、對于下面幾個函數:(1)voidf(intx,floaty){……}(2)intf(inta,floatb){……}(3)intf(inti,intj){……}(4)floatk(intx){……}是重載函數。A、4個全部 B、1和2 C、2和3 D、3和416、使用(“”,ios::app);語句打開文件后,則( )A、使輸出追加到文件尾部 B、打開一個文件進行讀操作 C、打開一個文件進行讀和寫操作D、文件以二進制方式打開,默認時為文本文件二、填空題1、面向對象的程序設計有四大特征,它們是抽象、封裝、、。2、結構體類型中的數據和成員函數默認類型為。3、C++要求為每個函數建立原型,以說明函數的名稱、參數的和,以及函數返回值。4、在函數說明前加關鍵字“inline”,則該函數被聲明為函數,其引入的目的是為了消除函數調用時的開銷,以提高運行速度。5、引用變量與被引用變量占有內存單元。6、運算符能夠用于訪問當前作用域內與局部變量同名的全局變量。7、#include<> voids(inta,int&b){intt=a;a=b;b=t;} voidmain(void) { intx=500,y=1000; cout<<x<<’\t’<<y<<’\n’;s(x,y);cout<<x<<’\t’<<y<<’\n'; }程序的第一行輸出為,第二行輸出為。8、#include<>voidmain(void){ for(inta=1,b=1;a<=5;a++) { if(b>=8)break; if(b%2==1){b+=7;continue;} b-=3;} cout<<”a=”<<a<<’\n’<<”b=”<<b<<’\n’;}程序輸出結果是a=,b=。9、#include<>intx=100;voidmain(void){ intx=200;x+=::x;{intx=500;::x+=x;}cout<<x<<’\n’;cout<<::x<<’\n’;}程序的第一行輸出為,第二行輸出為。10、#include<>voidf(floatx=5,inty=16,charz=‘C’);voidmain(){floata=;intb=2;charc='D';f();f(a);f(a,b);f(a,b,c);}voidf(floatx,inty,charz){cout<<“x=”<<x<<“y=”<<y<<“z=”<<z<<endl;}程序的第二行輸出為,第三行輸出為。11、以下程序的輸出結果是。#include<>chara[]=“ABCDEFGHI”;char&f(int);intmain(){f(6)=‘X’;cout<<a<<endl;return0;}char&f(inti){returna[i]; }12、如果C++程序中使用了:cout、strcpy,則必須在程序首部包含文件和。13、#include<>#include<iomanip>voidmain(){ inti=7890; cout<<setw(6)<<i<<endl;cout<<i<<endl; }程序的第一行輸出為,第二行輸出為。14、#include<>voidmain(){ inti=100;(ios::hex); cout<<i<<”\t”;cout<<i<<”\t”;(ios::dec);cout<<i<<”\n”;}以上程序運行的結果是第三章類和對象一、選擇題1、()不是構造函數的特征。A、構造函數的函數名與類名相同;B、構造函數可以重載;C、構造函數可以設置缺省參數;D、構造函數必須指定類型說明。2、下列關于構造函數的描述中,()是正確的。A、構造函數可以設置缺省參數;B、構造函數可以被繼承;C、構造函數可以對靜態(tài)數據成員進行初始化;D、構造函數可以說明為虛函數;3、()是析構函數的特征。A、析構函數可以有一個或多個參數;B、析構函數名與類名不同;C、析構函數的定義只能在類體內;D、一個類中只能定義一個析構函數;4、定義析構函數時,應該注意()。A、其函數名與類名完全相同;B、函數返回類型是void類型;C、無形參,也不可重載;D、函數體中必須有delete語句;5、下列靜態(tài)數據成員的特性中,()是錯誤的。A、說明靜態(tài)數據成員時前邊要加修飾符static;B、靜態(tài)數據成員要在類體外進行初始化;C、靜態(tài)數據成員不是所有對象所共用的;D、引用靜態(tài)數據成員時,要在其名稱前加<類名>和作用域運算符;6、友元的作用是()。A、提高程序的運用效率;B、加強類的封裝性;C、實現數據的隱藏性;D、增加成員函數的種類;7、關于成員函數特征的下列描述中,()是錯誤的。A、成員函數一定是內聯函數;B、成員函數可以重載;C、成員函數可以設置缺省參數值;D、成員函數可以是靜態(tài)的;8、已知:print()函數是一個類的常成員函數,它無返回值,下列表示中,()是正確的;A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);9、在()情況下適宜采用inline定義內聯函數。A、函數體含有循環(huán)語句;B、函數體含有遞歸語句;C、函數代碼小,頻繁調用;D、函數代碼多,不常調用;10、假定AB為一個類,則執(zhí)行“AB

a(4),b[3],*p[2];”語句時,自動調用該類構造函數的次數為()。A、3

B、4

C、6

D、911、通常拷貝初始化構造函數的參數是()。

A、某個對象名B、某個對象的成員名C、某個對象的引用名D、某個對象的指針名 12、有關類的說法不正確的是()。A、類是一種用戶自定義的數據類型B、只有類中的成員函數才能存取類中的私有數據C、在類中,如果不作特別說明,所有的數據均為私有類型D、在類中,如果不作特別說明,所有的成員函數均為公有類型13、在聲明類時,下面說法正確的的是()。A、可以在類的聲明中給數據成員賦初值B、數據成員的類型可以是registerC、public,private,protected這三種屬性的成員可以按任意順序出現D、沒有用public,private,protected定義的成員是公有成員14、已知:p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給m賦值為5,()是正確的。A、=5B、A1->p=5C、A1.*p=5D、*=515、已知:類A中一個成員函數說明如下:voidSet(A&a);其中,A&a的含義是()。A、指向類A的指針為aB、將a的地址值賦給變量SetC、a是類A的對象引用,用來作函數Set()的形參D、變量A與a按位相與作為函數Set()的參數16、下列說明中constchar*ptr;ptr應該是()。A、指向字符型常量的指針B、指向字符的常量指針C、指向字符變量的指針D、指向字符串的常量指針17、采用函數重載的目的在于:A、實現共享B、減少空間C、提高速度D、使用方便,提高可讀性18、有關類和對象的說法下列不正確的是()。A、對象是類的一個實例B、任何一個對象只能屬于一個具體的類C、一個類只能有一個對象D、類與對象的關系和數據類型和變量的關系相似19、有以下類的說明,請指出錯誤的地方()。ClassCSample{inta=;ACSample();Bpublic:CSample(intval);C~CSample();D};20、在類的定義形式中,數據成員、成員函數和()組成了類定義體。A、成員的訪問控制信息B、公有消息C、私有消息D、保護消息二、填空題通常的拷貝初始化構造函數的參數是_________________在C++中函數參數的傳遞方式有三種,分別是:__________、__________和__________。任何類中允許有三種訪問權限的數據,這三種訪問權限分別是__________、__________和__________。類中數據成員和成員函數的默認類型為______________在類內部定義的__________和__________數據不能被不屬于該類的成員函數來存取,定義為__________的數據,可以在類外部進行存取。__________是一種特殊的成員函數,它主要用來為對象分配內存空間,對類的數據成員進行初始化并執(zhí)行對象的其他內部管理操作。一個類中有__________個析構函數。__________成員函數中不能直接引用類中說明的非靜態(tài)成員。已知類Sample中的一個成員函數說明如下:voidSet(Sample&a);其中,Sample&a的含意是_________________10.靜態(tài)數據成員屬于類,可以使用_______________ 的方式訪問靜態(tài)的數據成員。11.編譯程序將this指針指向_____________。12.以下程序的執(zhí)行結果是__________。#include<>classSample{public:Sample(){cout<<“constructore”<<endl;}};voidfn(inti){staticSamplec;cout<<“i=”<<i<<endl;}voidmain(){fn(10);fn(20);}以下程序的執(zhí)行結果是_______________。#include<>classsample{private:intn;staticintk;public:sample(inti){n=i;k++;};voiddisp();};voidsample::disp(){cout<<"n="<<n<<",k="<<k<<endl;}intsample::k=0;voidmain(){samplea(10),b(20),c(30);();();();}以下程序的執(zhí)行結果是_______________#include<>classsample{intx;public:voidsetx(inti){x=i;}intputx(){returnx;}};voidmain(){sample*p;sampleA[3];A[0].setx(5);A[1].setx(6);A[2].setx(7);for(intj=0;j<3;j++){p=&A[j];cout<<p-->putx()<<"";}cout<<endl;}15.以下程序的執(zhí)行結果是_______________#include<>classA{public: A(){cout<<"ConstructingA\n";} ~A(){cout<<"DestructingA\n";}};classB{public: B(){cout<<"ConstructingB\n";} ~B(){cout<<"DestructingB\n";}};main(){ Aa; Bb; return0;}第四章派生類與繼承一、選擇1、從一個基類派生出的各個類的對象之間(1)。A、共享所有數據成員,每個對象還包含基類的所有屬性B、共享部分數據成員,每個對象還包含基類的所有屬性C、不共享任何數據成員,但每個對象還包含基類的所有屬性D、共享部分數據成員和成員函數2、C++的繼承性允許派生類繼承基類的(2)。A、部分特性,并允許增加新的特性或重定義基類的特性B、部分特性,但不允許增加新的特性或重定義基類的特性C、所有特性,并允許增加新的特性或重定義基類的特性D、所有特性,但不允許增加新的特性或重定義基類的特性3、對于公有繼承,基類的公有和保護成員在派生類中將(3)成員。A、全部變成公有B、全部變成保護C、全部變成私有D、仍然相應保持為公有和保護4、建立包含有類對象成員的派生類對象時,自動調用構造函數的執(zhí)行順序依次為(4)的構造函數。A、自己所屬類、對象成員所屬類、基類B、對象成員所屬類、基類、自己所屬類C、基類、對象成員所屬類、自己所屬類D、基類、自己所屬類、對象成員所屬類5、派生類的對象對其基類中(5)可直接訪問。A、公有繼承的公有成員B、公有繼承的私有成員C、公有繼承的保護成員D、私有繼承的以有成員6、設類B是基類A的派生類,并有語句:Aaa,*pa=&aa;Bbb,*pb=&bb;則正確的語句是___(6)__。A、pb=pa;B、bb=aa;C、aa=bb;D、*pb=*pa;7、在公有派生情況下,有關派生類對象和基類對象的關系,不正確的敘述是_(7)__.A、派生類的對象可以賦給基類的對象B、派生類的對象可以初始化基類的引用C、派生類的對象可以直接訪問基類中的成員D、派生類的對象的地址可以賦給指向基類的指針8、若類X和類Y的定義如下:classX{inta,b;public:voidfx();};classY:publicX{intc;public:voidfy();};voidY::fy(){c=a*b;}則上述代碼中,(8)是非法的語句。A、voidfx(); B、k=a*b; C、voidfy(); D、intc;9、如果一個派生類的基類不止一個,則這種繼承稱為__(9)__。A、單繼承 B、虛繼承 C、多態(tài)繼承 D、多重繼承10.假定要對類AB定義加號操作符重載成員函數,實現兩個AB類對象的加法,并返回相加結果,則該成員函數的聲明語句為:(10)

。A、

AB

operator+(AB

&a,AB

&b)

B、

AB

operator+(AB

&a)C、

operator+(AB

a)

D、

AB

&operator+()11、下面敘述不正確的是(11)

。A、派生類可以使用private派生B、基類的public成員在派生類中仍然是publicC、對基類成員的訪問必須是無二義性的D、賦值兼容原則也適合多重繼承的組合12、下面敘述不正確的是(12)

。A、基類的protected成員在派生類中仍然是protectedB、基類的protected成員在public派生類中仍然是protectedC、基類的protected成員在private派生類中仍然是privateD、對基類成員的訪問必須是無二義性的13、下面敘述不正確的是(13)

。A、成員的訪問能力在private派生類中和public派生類中仍是不同的B、基類的private成員在public派生類中不可訪問C、賦值兼容規(guī)則不適合于多重繼承的組合D、public基類成員在protected派生中是protected14、下面敘述正確的是(14)

。A、基類的對象可以賦給派生類B、只要是基類的對象,都可以賦給由它派生的任一個派生類對象C、只有該基類直接派生出來的類的對象才可以賦給該基類的對象D、公有派生類的對象可以賦給基類的對象15以下程序的輸出結果為是(15)。

#include<>

classA

{public:

intn;};

classB:virtualpublicA{};

classC:virtualpublicA{};

classD:publicB,publicC

{intgetn(){returnB::n;}};

voidmain()

{Dd;::n=10;::n=20;

cout<<::n<<","<<::n<<endl;

}A、10,20B、20,20C、10,10二、填空題1、在C++中派生類時,可以有(1)、(2)和(3)三種不同的方式。2、公有派生類不能訪問基類的(4)成員,但是派生類可以訪問基類的(5)成員和(6)成員。3、構造函數不能被繼承,因此,派生類的構造函數必須通過調用(7)構造函數進行初始化基類的對象。4、保護派生具有雙重作用:對(8),具有公有性,對其他外部,具有(9)。5、在多重派生中,要使公共基類在派生類中只有一個拷貝,必須將該基類說明為(10)。第五章多態(tài)性一、單選題下列運算符中,______運算符在C++中不能重載。A、

:B、+C、—D、<=下列運算符中,______運算符在C++中不能重載。A、>B、[]C、::D、<<在C++中,通常重載運算符的成員函數稱為______。A、運算符函數B、重載函數C、函數重載運算符D、以上都不對下列函數中,______不能重載。A、成員函數B、非成員函數C、析構函數D、構造函數系統(tǒng)在調用重載函數時,往往根據一些條件確定哪個重載函數被調用,在下列選項中,不能作為依據的是______。A、參數的個數B、參數的類型C、參數的順序D、函數的類型下列對重載函數的描述中,______是錯誤的。A、重載函數中不允許使用默認參數B、重載函數中編譯是根據參數表進行選擇的C、一般情況下,不要使用重載函數來描述毫無相干的函數D、構造函數重載將會給初始化帶來多種方式下列關于運算符重載的描述中,______是正確的。A、運算符重載可以改變運算符的個數B、運算符重載可以改變優(yōu)先級C、運算符重載可以改變結合性D、運算符重載不可以改變語法結構8、要實現動態(tài)聯編,派生類中的虛函數______。A、參數個數必須與函數的原型相同,參數類型可以與函數的原型不同B、參數類型必須與函數的原型相同,返回類型可以與函數的原型不同C、參數個數、類型和順序必須與函數的原型相同,返回類型必須與函數的原型相同D、以上都對9、關于虛函數的描述中,______是正確的。A、虛函數是一個static類型的成員函數B、虛函數是一個非成員函數C、基類中說明了虛函數后,派生類中對其對應的函數可不必說明為虛函數D、派生類的虛函數與基類的虛函數具有不同的參數個數和類型10、______是一個在基類中說明的虛函數,它在該基類中沒有定義,但要求任何派生類都必須定義自己的版本。A、虛析構函數B、虛構造函數C、純虛函數D、靜態(tài)成員函數11、對于以下類定義,下面正確的敘述是()classA{public:virtualvoidfunc1(){}voidfunc2(){}};classB:publicA{public:voidfunc1(){cout<<″classBfunc1″<<end1;}virtualvoidfunc2(){cout<<″classBfunc2″<<end1;}};A、A::func2()和B::func1()都是虛函數B、A::func2()和B::func1()都不是虛函數C、B::func1()是虛函數,而A::func2()不是虛函數D、B::func1()不是虛函數,而A::func2()是虛函數12、假定要對類AB定義加號操作符重載成員函數,實現兩個AB類對象的加法,并返回相加結果,則該成員函數的聲明語句為:

。A、AB

operator+(AB

&a,AB

&b)

B、AB

operator+(AB

&a)C、operator+(AB

a)

D、AB

&operator+()13、下面是對虛函數的的正確描述

。A、虛函數不能是友元函數B、構造函數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論