版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計模擬試卷(一一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中分。編寫C++程序一般需經(jīng)過的幾個步驟依次是決定C++語言中函數(shù)的返回值類型的是return下面敘述不正確的是對基類成員的必須是無二義性的子類中這些成員,就產(chǎn)生了二義性,但進行時,不能存在二義性。賦值兼容規(guī)則是指公有成員采用私有繼承時,在派生類中變成了私有成員,所以D誤。類解析:(P39)在公有派生類的成員函數(shù)不能直接基類中繼承來的某個成員,則該成員一定是基類中解析:(P133)在派生類中基類的保護或者基類公有都可以直接,基類的私有成員只能是基類的成員函數(shù)來。所以選擇A項。對基類和派生類的關(guān)系描述中,錯誤的是關(guān)于this指針使用說法正確的是保證基類私有成員在子類中可以被保證基類保護成員在子類中可以被保證基類公有成員在子類中可以被。解析:(P86)this指針是隱藏的,可以使用該指針來調(diào)用對象中的數(shù)據(jù)?;惖某蓡T在派生類中能否,與繼承方式有關(guān),與this沒有關(guān)系。所以選擇A項。所謂多態(tài)性是指的同名函數(shù)。多態(tài)性肯定具有相同的函數(shù)名,所以選擇B項。一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為下面函數(shù)模板定義中不正確的是A.B.C.D.答案解析:(P147)A項中F是一個返回Q類型的值,而returnA假設(shè)ClassY:publicX,即類Y是類X的派生類,則說明一個Y類的對象時和刪除Y,調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的次序分別為答案解析:(P130)適宜采用inline定義函數(shù)情況是解析:(P59)內(nèi)聯(lián)函數(shù)具有程序代碼少、頻繁調(diào)用和執(zhí)行效率高的特征,所以選擇C假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb;},則執(zhí)行Ax(4,5);,x.a和x.b的值分別為3和5和4和20和答案解析:(P75)a=4,因為后減,b的值與a、bb相關(guān),b=4*5=20,而與aa在類中說明的成員可以使用關(guān)鍵字的是答案解析:extern用于外部變量的。register寄存器類型變量。無cpu類型。它們都不能聲明類成員。public為公有權(quán)限,所以選擇A項。下列不能作為類的成員的是自身類對象的以實現(xiàn)鏈表的操作,當(dāng)然也可以使用對象 。類中可以有另一個類的對象,即成員對象。以選擇B使用地址作為實參傳給形參,下列說法正確的是下列程序的輸出結(jié)果是#include<iostream.h>voidmain(){intint(*p)[3];答案維數(shù)組。的格式為:<數(shù)據(jù)類型><(*變量名)><[元素個數(shù)]>。p+ip[i]*(p+i)都表示b數(shù)組第i+1行的第1個元素的首地址。*(p+i)+jp[i]+j&p[i][j]都表示b數(shù)組第i+1行、第j+1列元素的地址。*(*(p+i)+j)*(p[i]+j)p[i][j]都表示b數(shù)組第i+1、第j+1列元素的值。所以題目分別p[0][0],p[0][1],p[0][2]。在C++中,使用流進行輸入輸出,其中用于屏幕輸入答案解析:(P193)(1)標(biāo)準(zhǔn)輸入流cin:istream類的對象。(2)標(biāo)準(zhǔn)輸出流cout:ostream(3)非緩沖型標(biāo)準(zhǔn)出錯流cerr:ostream類的對象。(4)緩沖型標(biāo)準(zhǔn)出錯流clog:ostream假定AA為一個類,a()為該類公有的函數(shù)成員,x為該類的一個對象,則x對象中函數(shù)x-解析:(P41)對象成員的方式為:對象名.成員。指針可以有兩種:(*對象指針).成員或者對象指針->成員。A選項是數(shù)據(jù)成員,B項是成員函數(shù)。關(guān)于對象概念的描述中,說法錯誤的是對象就是C以A誤。二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答。錯填、不填均無分 [解析]cin、cout、clog和cerr分別用于標(biāo)準(zhǔn)輸入、輸出、標(biāo)準(zhǔn)錯誤流(緩沖)(非緩沖) [解析] 答案:(P78)int*ip=new[解析]new [解析]類模板的使用。template<classT>,也可以引入多參數(shù)的如:template<classT1,classT2,...,classTn> [解析]使用new表達(dá)式cout<<end1還可表示為 [解析]endl與字符常量‘\n’在C++中,一個指針?biāo)赶虻膶ο蟮某蓡T所用的指向運算符是 [解析]指針使用成員有兩種方法:“->”指向運算符和“.”成員運算符 答案:(P80)或拷對賦值運算符進行重載時,應(yīng)為 [解析]運算符重載的方法有或者成員函數(shù)兩種途徑,但是賦值運算符只能使用成員函數(shù)的如果要把A類成員函數(shù)f()且返回值為void為類B的函數(shù),則應(yīng)在類B的定義中入的語 答案:(P109)friendvoid[解析]成員函數(shù)作為另一個類的函數(shù),格式為:friend返回類型類名::函數(shù)(形參) String類的 [解析]string類對象方法的find,查不到字符串,則返回-1intn=0; [解析]=是賦值運算符,不是關(guān)系運算符,且不等0, [解析]格式控制方法的使用,如setw,setfill [解析]多態(tài)性包括靜態(tài)的(編譯時)多態(tài)性和動態(tài)的(運行時) 答案stringstr("oC++"); [解析] [解析]使用new 答案:(P151)ector<int>V2(V1);[解析]采用向量初始化另一個向量的形式:vector<type>三、改錯題(本大題共5小題,每小題2分,共10分)下面的類定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并給出修改意見。#include<iostream.h>classTestintx,y=20;Test(inti,intj){x=i,y=j;}intgetx(){returnx;}intgety(){returnvoid{Testmt(10,20);}答案:intx,y=20;在類不能對數(shù)據(jù)成員直接賦值[修改]int#include<iostream.h>classTest{intx,y;fun(inti,intvoid{Testa;}答案:inti,intj調(diào)用時,既有一個參數(shù),也有兩個參數(shù),且沒有重載,所以參數(shù)需要帶默認(rèn)值。所以inti,intj錯誤。[修改]inti,intj=0//注j只要有一個int#include<iostream.h>classA{inti;virtualvoidA(intclassB:public{intvoid{cout<<"B::fun()\n";B(intm,intvoid{AB}答案:B(intm,intn=0):A(m),j(n){}因為基類是抽象類,不能被實例化,所以在派生類中不能調(diào)用初始化基類對象。所以B(intm,intn=0):A(m),j(n){}錯誤,刪去A(m)。[修改]B(intm,int#include<iostream.h>classXintx;X(int}voidvoidfun(Xvoidmain()答案:cout<<this->x=x<<endl;要輸出this->x=x[修改]cout<<(this-#include<iostream.h>#include<string.h>classBas(char*s="\0"){strcpy(name,s);}voidshow();charBasvoidvoidmain(){Basd2("}答案:voidshow();是普通函數(shù)不是成員函數(shù),但是要類成員,需要定義為函數(shù)[修改]friendvoid四、完成程序題(本大題共5小題,每小題4分,共20分504342107.18.19.110.1#include<iostream.h>template<classT>voidf( for(intt=a[i],a[i]=a[n-1-i],a[n-1-}voidmain{intdoubled[6]={11.1,10.1,9.1,8.1,7.1};for(inti=0;i<5;i++)cout<<a[i]<<"";cout<<endl;for(i=0;i<6;i++)cout<<d[i]<<"";cout<<endl;}答案:Ta[],in在下面程序的底畫線處填上適當(dāng)?shù)淖志?,使該程序?zhí)行結(jié)果為40#include<iostream.h>classTest{ Test(intint{return void{Testtest;}答案:staticintx;,int[解析]從成員函 方式類名::成員可知是靜態(tài)成員所以staticintx;從結(jié)果要對初化為30,且在類行初始化,intTest::x=30;在下列程序的空格處填上適當(dāng)?shù)淖志洌馆敵鰹椋?,2,10#include<iostream.h>#include<math.h>classMagic{doublex;Magic(doubleMagic {return} operator<<(ostream&stream,Magic&{stream<<c.x;return}void{Magiccout<<ma<<","<<Magic(2)<<","<<ma+Magic(-6)+}答案:operator+(Magic&c),friend[解析]對加法進行重載,operator+(Magic&c),是對符進行重載,要成員所以定義為函數(shù),friendostream&operator。下面是一個輸入半徑,輸出其面積和周長的C++#include void{doublerad;doublel=2.0*pi*rad;doublecout<<"\nThelongis:"<<l<<endl;cout<<"Theareais:"<<s<<endl;}答案:usingnamespacestd,#definepi[解析]進行輸入或輸出要引入iostream,usingnamespacestd;從標(biāo)點看沒有分號,所以使用宏定義,#definepi3.14159。#include<iostream.h>voidmain(){char }答案:inti=32;,a>=A&&[解析]大寫字母變小寫字母相差32,需要對i并初始化。大寫字母變小寫字母。要判斷字五、程序分析題(本大題共4小題,每小題5分,共20分classavirtualvoid{cout<<"aprog..."<<classb:publicclassc:publicvoidprint(){cout<<"cvoidshow(a}void{abcc;}答案:aprog...aprog...c#include<math.h>#include<iostream.h>#include<iomanip.h>boolfun(longn);voidmain(){longa=10,b=30,l=0;if(a%2==0)a++;for(longm=a;m<=b;m+=2)coutcout<<setw(5)}}boolfun(long{intsqrtm=(int)sqrt(n);for(inti=2;i<=sqrtm;i++)returnfalse;returntrue;}答案:1113171923[解析]循環(huán)體用來判斷n是否是質(zhì)數(shù)的函數(shù),在main函數(shù)判斷10~30#include<iostream.h>classTest{intx,y;Test(inti,intintget(inti,int{returnvoid{Testint(Test::*p)(int,int=10);Test*p1=&t2;cout<<(p1-}答案 [解析]指向類成員函數(shù)的指針的使用,*p指向TestP=Test::get.這樣p就和get發(fā)生了聯(lián)系。(t1.*p)(5)等價于調(diào)用一個參數(shù)的get#include<iostream.h>#include<string.h>#include<iomanip.h>classstudent{charname[8];intdeg;charfriendclassprocess;//說明student(charna[],int{strcpy(name,na);}class{voidtrans(student{inti=s.deg/10;{casestrcpy(s.level,");break;case8:case7:case6:strcpy(s.level,}}voidshow(studentvoid{studentst[]={student("",78),student("",92),student("processcout<<"結(jié)果:"<<""<<setw(6)<<"成績"<<setw(8)<<"等級"<<endl;for(inti=0;i<4;i++){}答案:結(jié)果:成績等78926288六、程序設(shè)計題(本大題共1小題,共10分1.已定義一個Shape抽象類,在此基礎(chǔ)上派生出矩形Rectangle和圓形CircleclassShapevirtualfloat}答案:classRectangle:publicRectangle(floati,floatfloatGetPerim(){return2*(L+W);}floatclassCircle:publicCircle(floatfloatGetPerim(){return3.14*2*R;}floatvoid{Shape*sp;sp=newCircle(10);cout<<sp->GetPerim()<<endl;sp=newRectangle(6,4);一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中分。靜態(tài)成員函數(shù)沒有this屬性,不是對象的特征,而this表示的是隱藏的對象的指針,因此靜態(tài)成員函數(shù)沒有this指針類中只有一個拷貝(副本),因此它對象的成員時要受到一些限制:靜態(tài)成員函數(shù)可以直接類中說明的靜態(tài)成員,但不能直接類中說明的非靜態(tài)成員;若要非靜態(tài)成員時,必須通過參數(shù)傳遞的方式得到相應(yīng)的對象,再通過對象來。假定AB為一個類,則執(zhí)行“ABa(2),b[3],*p[4];”語句時調(diào)用該類構(gòu)造函數(shù)的次數(shù)A.B.C.D.答案有關(guān)多態(tài)性說法不正確的是C++基類和虛函數(shù)來實現(xiàn)的。所以錯誤的是C項。假定一個類的構(gòu)造函數(shù)為“A(inti=4,intj=0){a=i;b=j;“Ax(1);”語1和1和4和4和答案類MyA的拷貝初始化構(gòu)造函數(shù)是答案解析:(P80)即拷貝構(gòu)造函數(shù)使用對象的作形參,防止臨時產(chǎn)生一個對象,A無參構(gòu)造函在C++中,函數(shù)原型不能標(biāo)識解析:函數(shù)的,說明函數(shù)的參數(shù)、返回類型以及函數(shù)名,函數(shù)體即實現(xiàn)部分決定功能。所以關(guān)系不能解析:(P111)可以是函數(shù)與類的關(guān)系即函數(shù),也可以類與類的關(guān)系即類,但不能繼承,是單向性,且不具有傳遞性 可 類中所有成員,提高 的方便性。因選擇D實現(xiàn)兩個相同類型數(shù)加法的函數(shù)模板的是add(Tx,TTTadd(TTadd(Tx,T答案,所以選擇D在inta=3,int*p=&a;中,*p的值是變量a變量p3答案解析:*p代表a變量的值,p代表a的地址值。所以選擇D項下列不是描述類的成員函數(shù)的是解析:(P109)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)都是特殊的成員函數(shù),則不是成員函數(shù)。如果從原有類定義新類可以實現(xiàn)的是信息的隱藏,通過權(quán)限來實現(xiàn)。數(shù)據(jù)抽象,將事物的特征抽象為數(shù)據(jù)成員或服務(wù)。因此選擇下面有關(guān)類說法不正確的是在函數(shù)定義中的形參屬于部變量,頻繁使用的變量可以為寄存器變量,形參不能使用靜態(tài)變量或寄存器變量。下列有關(guān)重載函數(shù)的說法中正確的是解析:(P59)this指針存在的目的是保證基類私有成員在子類中可以被保證基類保護成員在子類中可以被保證基類公有成員在子類中可以被原型提供的信息去檢查調(diào)用的,強制參數(shù)轉(zhuǎn)換成為適當(dāng)類型,保證參數(shù)的正確傳遞。對于標(biāo)準(zhǔn)庫函數(shù),其在頭文件中,可以用#include宏命令包含這些原型文件;對于用戶自定義函數(shù),先定義、后調(diào)用的函數(shù)可以不用,但后定義、先調(diào)用的函數(shù)必須。一般為增加程序的可理解性,常將主函數(shù)放在程序開頭,這樣需要在主函數(shù)前對其所調(diào)用的函數(shù)一一進行,以消除函數(shù)所在位置的影響。所以選擇C關(guān)于new運算符的下列描述中,錯誤的是使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運算符delete解析:(P78)new創(chuàng)建的對象數(shù)組不能指定初始值,所以調(diào)用無參的構(gòu)造函數(shù),選擇DA1-答案解析:(P118)A中p是指針即地址,錯誤;B選項中A1成員函數(shù)指針的:指向short型的Screen類的成員的指針定義如下shortScreen::*ps_Screen可以用_height的地址初始化如下:short類成員的指針必須總是通過特定的對象或指向改類型的對象的指針來。是通過使用兩個指向成員操作符的指針(針對類對象和的.*,以及針對指向類對象的指針的->*)。以下基類中的成員函數(shù)表示純虛函數(shù)的是virtualvoidvoidvirtualvoidvirtualvoid答案解析:(P173)當(dāng)在基類中不能為虛函數(shù)給出一個有意義的實現(xiàn)時,可以將其為純虛函數(shù),實C++類體系中,不能被派生類繼承的有解析:(P132)靜態(tài)成員函數(shù)不能說明為static由于靜態(tài)成員函數(shù)在類中只有一個拷貝(副本),因此它對象的成員時要受到一些限制:靜態(tài)成員函數(shù)可以直接類中說明的靜態(tài)成員,但不能直接類中說明的非靜態(tài)成員;若要訪問非靜態(tài)成員時,必須通過參數(shù)傳遞的方式得到相應(yīng)的對象,再通過對象來。虛函數(shù)是非靜二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答。錯填、不填均無分假設(shè)inta=1,b=2;則表達(dá)式(++a/b)*b--的值為 [解析]cout<<(++a/b)*b--時,先++a/b值為1,后1*b--,先取b=2,結(jié)果為2,再讓b=1 [解析] 下面程序的輸出結(jié)果 #include<iostream.h>voidmain(){intnum=2,i=6;{i--}答案靜態(tài)成員函數(shù)、函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是 [解析]函數(shù)不是類成員,但可以類成員。類的封裝性保證了數(shù)據(jù)的安全,但引入,雖然類是方便了,但確實破壞類的安全性 <指針變量>new<int*ip;ip=newint;//ip指向1個未初始化的intint*ip;ip=newint(68);//ip指向1個表示為68的intint*ip;ip=newint[5];//ip指向5個未初始化的int型對象的首地址for(inti=0;i<5;i++)ip[i]=5*i+1;//給ip指向的5個對象賦值 常成員函數(shù)的說明格式如下:<返回類型說明符><成員函數(shù)名>(<參數(shù)表 基類的公有成員在派生類中的權(quán)限由 不同對象可以調(diào)用相同名稱的函數(shù),但執(zhí)行完全不為的現(xiàn)象稱為 [解析]多態(tài)性的概念。虛函數(shù)是實現(xiàn)多態(tài)的基礎(chǔ),運行過程中的多態(tài)需要同時滿足3:(1)類之間應(yīng)滿足子類型關(guān)系。(2)必須要有的虛函數(shù)。(3)調(diào)用虛函數(shù)操作的是指向?qū)ο蟮闹羔樆蛘邔ο螅换蛘呤怯沙蓡T函數(shù)調(diào)用虛函數(shù)(如果是在構(gòu)造函數(shù)或析構(gòu)函數(shù)中調(diào)用虛函 this [解析] [解析] [解析]源程序*.cpp,目標(biāo)文件為*.obj,可執(zhí)行程序*.exe [解析]#includevector類中向向量尾部一個對象的方法是 答案:(P51)傳地址或用,直接修改變量的別名即的值,該變量也就隨著變化。ifstreaminfile;的功能可用一個語句實現(xiàn),這個語句 答案:(P199)ifstream[解析]voidifstream::open(constchar*fname,intmode=ios::in,intifstream::ifstream(constchar*fname,intmode=ios::in,intaccess=filebuf::openprot);數(shù)access的值決定文件的方式,一般取缺省值filebuf::openprot,表示是普通文件。mode的取值如下:(1)ios::in:;(2)ios::nocreate:不建立新的文件。當(dāng)文件不存在時,導(dǎo)致open();(3)ios::noreplace:不修改原來已經(jīng)存在的文件。若文件已經(jīng)存在,導(dǎo)致open();(4)ios::binary:如果要把類B的成員函數(shù)voidfun()說明為類A的函數(shù),則應(yīng)在類A中加入語句 答案:(P111)friendvoidB::fun();[解析 成員函數(shù)作為另外一個類 函數(shù)時,使用類作用域運算符:: [解析]三、改錯題(本大題共5小題,每小題2分,共10分)下面的類定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并給出修改意見。#include<iostream>#include<fstream>#include<string>usingnamespacestd;classAA(constchar*na){strcpy(name,na);}charclassB:public{B(constchar*nm):A(nm){}voidshow();void{}void{B}答案:private:因為name如果是私有的,在派生類中無法,而基類沒有提供成員函數(shù)來name,所以更改name權(quán)限為公有或保護,這樣對于派生類來說是透明的[修改]public:或#include<iostream.h>voidf(int*a,intn){inti=0,j=0;intk=0;}}voidshow(inta[],int{for(inti=0;i<n;i++)cout<<a[i]<<"";}void{intp[5];inti=0,n=5;答案:[修改#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;}答案:int*constp=&i;在指針變量前加const表示一個常指針即地址不能變化,它指向的變[修改]int#include<iostream.h>voidmain(){inti,*p;}答案:*p=i;[修改#include<iostream.h>classAintx,y;voidfun(inti,intvoid{cout<<x<<"void{A}答案:voidfun(inti,intj)[修改]voidfun(inti,int四、完成程序題(本大題共5小題,每小題4分,共20分#include<iostream>#include<string>usingnamespacestd;classstrchar*st;str(char}str& {deletest;return*this;}void~str(){deletevoidset(char*s)//初始化 }void{str答案:str&a,st=new[解析]對“=”運算符進行重載,調(diào)用時s2=s1,都是對象,所以形參使用對象的,要使用對象作為形參(產(chǎn)生臨時對象)。使用strcpy進行字符的,st必須有一定的空間,空一個類的頭文件如下所示,num初始化值為5,程序產(chǎn)生對象T,且修改num為10,#include<iostream.h>classTeststaticintnum;voidTest::Test(intvoidvoidmain(){Test}答案:int[解析]靜態(tài)成員在類外初始化,注意它的格式。調(diào)用show下面是一個三角形三邊,輸出其面積C++#include<iostream.h>#include<math.h>voidarea(){doublea,b,c;cout<<"Inputabc:";{doublecout<<"Thearea}}void答案:cin>>a>>b>>c;,doubles=sqrt(l*(l-a)*(l-b)*(l-[解析]輸入三個邊的長度,由公式得出三角形的面積doubles=sqrt(l*(l-a)*(l-b)*(l-Der1Der2#include<iostream.h>classBase classDer1:publicvoiddisplay(){cout<<"Der1classDer2:publicvoiddisplay(){cout<<"Der2void {p-void{Der1Der2Base*p=&b1;}答案:virtualvoiddisplay()=0;,Base[解析]抽象類有純虛函數(shù),派生類為display。結(jié)果fun#include<iostream.h>classArr{int*a,n;Arr(int*aa,inta=newint[n];for(inti=0;i<nn;i++)}~Arr(){delete {returnvoid{intArra1(b,5);int}答案:intGetValue(int[解析]函數(shù)調(diào)用GetValue,由此可知要定義該函數(shù),循環(huán)求和,循環(huán)5五、程序分析題(本大題共4小題,每小題5分,共20分#include<iostream.h>classexample{inta;example(intvoidprint(){a=a+1;cout<<a<<"";}voidprint()constvoid{exampleconstexampley(2);}答案[解析]x是普通對象,調(diào)用普通的print函數(shù);而y#include<iostream.h>voidmain(){int*p1;int**p2=&p1;intb=20;}答案[解析]p1指向b,而p指向p1的地址。*p2表示p1的地址,p1的地址就是&b,即*p2是&b,**p2就是b#include<iostream.h>classBaseintY;Base(inty=0)~Base(){cout<<"~Base()\n";}voidprint(){cout<<Y<<classDerived:publicintZ;Derived(inty,int}~Derived(){cout<<"~Derived()\n";}voidprint()}void{Derivedd(10,20);}10#include<iostream.h>classA{cout<<"A\n";fun();}virtualvoidfun(){cout<<"A::fun()函數(shù)classB:public{cout<<"B構(gòu)造函數(shù)voidfun(){cout<<"B::fun()calle函數(shù)void{B答案:AB::fun()calle[解析]定義派生類對象,首先調(diào)用基類構(gòu)造函數(shù),調(diào)用A類中fun(),然后調(diào)用B,在調(diào)用B的fun六、程序設(shè)計題(本大題共1小題,共10分1.編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)和測試程序。#include<iostream.h>#include<string.h>classStringString(constchar*str=NULL);String(constString&other);~String();String&operator=(constString&other);void}char*m_data;答案{delete[]m_data;//由于m_data是數(shù)據(jù)類型,也可以寫成delete}String::String(constchar{m_data=newchar[1];//若能加NULL}{intm_data=newchar[length+1];NULL判斷則更好strcpy(m_data,str);}}String::String(constString{intm_data=newchar[length+1];//若能加NULL判斷則更好strcpy(m_data,other.m_data);}String&String::operator=(constStringreturn*this;intm_data=newchar[length+1];//若能加NULL判斷則更好strcpy(m_data,other.m_data);return}void{Stringstr1("aa"),str2;Stringstr3(str2);C++程序設(shè)計模擬試卷(三只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均分設(shè)有定義inti;doublej=5;,則10+i+j值的數(shù)據(jù)類型是解析:數(shù)據(jù)的轉(zhuǎn)換,j是double類型,運算只能作同類型的運算,所以要轉(zhuǎn)換,而int能自動要修改指針p本身,又要修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為constcharchar*constcharconstconstchar*constp=“ABCD”;解析:(P12)constchar*p說明通過p修改所指向的數(shù)據(jù)。char*constp則說明不能修改指針p的地址。因此constchar*constp=“ABCD”;它修改指針p本身,又修改p所指類的構(gòu)造函數(shù)被自動調(diào)用執(zhí)行的情況是在定義該類的解析:(P75)建立對象時,自動構(gòu)造函數(shù)的初始化對象,是系統(tǒng)自動調(diào)用的。而成員函數(shù)、已知類A是類B的,類B是類C的,則類A一定是類C的類C一定是類A的類C的成員函數(shù)可以類B的對象的任何成類A的成員函數(shù)可以類B的對象的任何成員解析:(P105)說明方法如下使元可以所有成員關(guān)系是單向的,不具有交換性。所以,B項和關(guān)系不具有傳遞性。所以,A誤假定一個類的構(gòu)造函數(shù)為“A(inti=4,int{a=i;b=j;}”,則執(zhí)行“Ax(1);”句后,x.a和x.b的值分別為1和1和4和4和答案關(guān)于this指針使用說法正確的是保證基類私有成員在子類中可以被保證基類保護成員在子類中可以被保證基類公有成員在子類中可以被。解析:(P86)this指針是隱藏的,可以使用該指針來調(diào)用對象中的數(shù)據(jù)?;惖某蓡T在派生類中能否,與繼承方式有關(guān),與this沒有關(guān)系。所以選擇A項。所謂多態(tài)性是指的同名函數(shù)。多態(tài)性肯定具有相同的函數(shù)名,所以選擇B項。關(guān)系不能解析:(P111)可以是函數(shù)與類的關(guān)系即函數(shù),也可以類與類的關(guān)系即類,但不能繼承,是單向性,且不具有傳遞性。可以類中所有成員,提高了的方便性。因此語句ofstreamf(“TEMP.DAT”,ios::app|ios::binary)?的功能是建立流對象f,試圖打開文件TEMP.DAT并與之連接,并且()解析:(P199)ios::binary,采用二進制形式,ios::app構(gòu)造函數(shù)不具備的特征是解析:(P75)構(gòu)造函數(shù)無返回類型不能繼承但可以重載,所以選擇D在公有繼承的情況下,基類的公有或保護成員在派生類中的權(quán)限解析:(P132)繼承方式的不同派生類成員的權(quán)限也不同,采用公有繼承,除了私有無法,公有、保護在派生類中保持不變,所以選擇B假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb;},則執(zhí)行Ax(4,5);,x.a和x.b的值分別為3和5和4和20和答案解析:(P75)a=4,因為后減,b的值與a、bb相關(guān),b=4*5=20,而與aaC++對C語言做了很多改進,即從面向過程變成為面向?qū)ο蟮闹饕蚴墙馕觯?P29)C++在類中說明的成員可以使用關(guān)鍵字的是答案解析:extern用于外部變量的。register寄存器類型變量。無cpu類型。它們都不能聲明類成員。public為公有權(quán)限,所以選擇A項。C++語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于解析:變量類可分為兩類:全局變量和局部變量局部變量:在函數(shù)定義的變量稱為局部變量,其作用域為:從定義變量的位置開始到在私有繼承的情況下,基類成員在派生類中的權(quán)限解析:(P132)私有繼承下,基類中的公有或保護成員在派生類中也是私有的,所以選擇A使用地址作為實參傳給形參,下列說法正確的是C++的繼承性允許派生類繼承基類的解析:(P129)派生類有兩類成員:一是基類,二是自身類。派生類中的成員不能基類中的私有成員,可以基類中的公有成員和保護成員。對于int*pa[5];的描述,正確的是pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個intpa是一個指向某個數(shù)組中第5個元素的指針,該元素是intpa[5]表示某個數(shù)組的第5類型是相同的。例如,語句int*pa[5];定義了一個指針數(shù)組。在指針數(shù)組的定義中有兩個運以下基類中的成員函數(shù)表示純虛函數(shù)的是virtualvoidvoidvirtualvoidvirtualvoid答案解析:(P173)當(dāng)在基類中不能為虛函數(shù)給出一個有意義的實現(xiàn)時,可以將其為純虛函數(shù),實二、填空題(本大題共20小題,每小題1分,共20分)案。錯填、不填均無分。 [解析] [解析]設(shè)類A有成員函數(shù)voidf(void);若要定義一個指向類成員函數(shù)的指針變量pf來指向f,該指針變量的語句是: 答案:(P117)void[解析]void(A::*pf)(void)=&A::f:void(A::*pf)(void);和pf=&A::f;doublecout<<setprecision(5)<<a<<", [解析]題目設(shè)置精度即有效數(shù)字都是5,a四舍五入是3.1416,b是3.14 除對象的方法pop_backeraseclear。 [解析] [解析]基類的公有成員在派生類中的權(quán)限由 假設(shè)類X的對象x是類Y的成員對象,則“YObj”語句執(zhí)行時,先調(diào)用類 [解析] 答案[解析]輸入、輸出格式ios::showpos [解析]istream和ostream的直接基類是iosintn=0; [解析]=是賦值運算符,不是關(guān)系運算符,且不等0, [解析] 答案[解析]定義向量列表vector<int>A(10,1),使用兩個參數(shù),10表示長度,1vector類中向向量尾部一個對象的方法是 答案:(P51)傳地址或用,直接修改變量的別名即的值,該變量也就隨著變化。 答案:[解析]函數(shù)使用有兩部分:和定義。定義,可以無;但函數(shù)定義在后,調(diào)用的話,需要先函數(shù)的原型。 答案:(P51)傳[解析](1)傳值調(diào)用又分為數(shù)據(jù)傳值調(diào)用和地址傳值調(diào)用。(2)調(diào)用是將實參變量值傳遞給形參,而形參是實參變量的名。是給一個已有變量起的別名,對的操作就是對該變量的操作。將指向?qū)ο蟮淖鳛楹瘮?shù)的形參,形參是對象的。[解析]實參與形參類型要一致,形參是對象的,實參應(yīng)該是對象名三、改錯題(本大題共5小題,每小題4分,共20分class{inta;ABC(int答案:ABC(intaa)a(aa){}[修改]ABC(int#include<iostream.h>classAton{intX,Y;intzx,zy;voidinit(inti,intj){zx=i;zy=j;}Aton(inti,intj,intn=0,intm=0)}void{Aton答案:intX,Y;因為X,Y都是私有的,在類外無法直接[修改]public:int#include<iostream.h>classBas~Bas(){cout<<"Basconstruct"<<endl;}virtualvoidf()=0;classDev:public~Dev(){cout<<"Basconstruct"<<endl;}virtualvoidf(){cout<<"Dev::f"<<endl;}void{Bas*a=newDeva-}答案:[修改]Bas[解析]Bas*a=newBas();抽象類不能被實例化,但可以指針或,所以不能用new,因以下程序?qū)崿F(xiàn)交換a,b#include<iostream.h>voidswap(int&a,int&b)a=a-}void{inta=19,b=15;}答案:swap(&a,&b);函數(shù)的形參是變量的,調(diào)用時的實參應(yīng)該是地址[修改]swap(a,#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;}答案:int*constp=&i;在指針變量前加const表示一個常指針即地址不能變化,它指向的變[修改]int四、完成程序題(本大題共5小題,每小題4分,共20分 o,andylin"。#include<iostream>#include<string.h>usingnamespacestd;classmystringchar*pdata;mystring(intlen){pdata=new}{deletevoidvoidfun(mystring**array,int memcpy(*array,old,}void{mystringstr(20);fun(ppstr,20);}答案:*array=newmystring(len);,(**ppstr).show();或[解析]調(diào)用mystring類的構(gòu)造函數(shù)開辟空間,后進行字符的。輸出可以直接使用str或者classline;classbox{private:intcolor;intupx,upy;intlowx,lowy;voidset_color(intvoiddefine_box(intx1,inty1,intx2,intclass{intintstartx,starty;intendx,endy;friendintsame_color(linel,boxb);voidset_color(intc){color=c;}voiddefine_line( intsame_color(linel,box{if(l.color==b.color)return1;return0;}答案:friendintsame_color(linel,boxb);,intx1,inty1,intx2,int[解析]成員函數(shù)作為函數(shù)的使用。使用friend關(guān)鍵字。由函數(shù)體可知形參的類型和個數(shù)#include<iostream.h>#include<math.h>classPointdoublex,y;Point(doublei=0,doublePoint(PointclassPointp1,p2;Line(Point&xp1,Point&xp2): doubleGetLength();double{doubledx=p2.x-doubledy=p2.y-p1.y;returnsqrt(dx*dx+dy*dy);}void{PointLine}答案:friend[解析]類的使用,定義Line是Point類的類,成員對象的初始化采用列表的形式在下面程序的底畫線處填上適當(dāng)?shù)淖志?,使該程序?zhí)行結(jié)果為40#include<iostream.h>classTest{ Test(intint{return void{Testtest;}答案:staticintx;,int[解析]從成員函數(shù)方式類名::成員可知是靜態(tài)成員所以staticintx;從結(jié)果要對初始化為30,且在類行初始化,intTest::x=30;。在下列程序的空格處填上適當(dāng)?shù)淖志?,使輸出為?,2,10#include<iostream.h>#include<math.h>classMagic{doublex;Magic(doubleMagic {return} operator<<(ostream&stream,Magic&{stream<<c.x;return}void{Magiccout<<ma<<","<<Magic(2)<<","<<ma+Magic(-6)+}答案:operator+(Magic&c),friend[解析]對加法進行重載,operator+(Magic&c),是對符進行重載,要成員所以定義為函數(shù),friendostream&operator。五、程序分析題(本大題共2小題,每小題5分,共10分#include<iostream.h>voidmain(){inta,b,c;charch;}答案0[解析]使用cin進行輸入字符的輸入的問題。1-->a,.-->ch,5-->b,空格轉(zhuǎn)換為零給了c#include<iostream.h>classA{cout<<"Ascons."<<endl;}virtual~A(){cout<<"Asdes."<<endl;}virtualvoidf(){cout<<"Asf()."<<endl;}voidg()classB:public{f();cout<<"Bs{cout<<"BsclassC:public{cout<<"Cs{cout<<"Csdes."<<endl;}voidf(){cout<<"Csvoid{A*a=newC;delete}答案:AsBsCsCsCsBsAs六、程序設(shè)計題(本大題共1小題,共10分classvehicleintwheels;//車輪數(shù)floatweight;//重量voidinit(intwheels,floatweight);intget_wheels();floatget_weight();voidprint();voidvehicle::init(intwheels,float}int{return}float{returnvoid{cout<<"車輪數(shù):"<<wheels<<","<<"重量答案:classcar:public{private:intpassengers;voidinit(intwheels,floatweight,intpass);intgetpassenger();voidvoidcar::init(intwheels,floatweight,intint{returnpassengers;}voidcar::print()cout<<"可載人數(shù)C++程序設(shè)計模擬試卷(四一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中分。當(dāng)一個類的某個函數(shù)被說明為virtual時,該函數(shù)在該類的所有派生類中只有被重新說明為virtual解析:(P170)在基類為virtual的函數(shù)為虛函數(shù),在派生類中只要有相同的函數(shù)(函數(shù)名相要修改指針p本身,又要修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為constcharchar*constcharconstconstchar*constp=“ABCD”;解析:(P12)constchar*p說明通過p修改所指向的數(shù)據(jù)。char*constp則說明不能修改指針p的地址。因此constchar*constp=“ABCD”;它修改指針p本身,又修改p所指函數(shù)調(diào)用func((exp1,exp2),(exp3,exp4,exp5))中所含實參的個數(shù)為A.B.C.D.答案template<classQ>QSum(Qx,Qy){return則下列語句中對該函數(shù)模板錯誤的使用是答案解析:(P40)由QSum(Qx,Qy)可知形參和函數(shù)返回值都是同一種數(shù)據(jù)類型。A、B、C。而D字符串作為實參,字符串的操作與數(shù)值類型不同,要用特殊方法進行字符串的連接和類B是類A的公有派生類,類A和類B中都定義了虛函數(shù)func(),p是一個指向類A,則p->A::func()將調(diào)用類A中的函數(shù)調(diào)用類B中的函數(shù)根據(jù)p所指的對象類型而確定調(diào)用類A中或類B中的函數(shù)類或者派生類對象,都執(zhí)行基類虛函數(shù)。注意p->A::func()和p->fun();進行區(qū)分。如果使用>fun(),因為p在面向?qū)ο蟮某绦蛟O(shè)計中,首先在問題域中識別出若干個類已知f1和f2是同一類的兩個成員函數(shù),但f1不能直接調(diào)用f2,這說明f1和f2f1不是靜態(tài)函數(shù),f2f1是靜態(tài)函數(shù),f2下列有關(guān)模板和繼承的敘述正確的是從動態(tài)性能看,繼承類系比模板類系具有的動態(tài)特有關(guān)C++編譯指令,以下敘述正確的是C++#includeC++解析:(P96)編譯指令以#作為開頭,只能一行寫一條,#if有選擇進行編譯,所以選擇B在C++中不返回任何類型的函數(shù)應(yīng)該說明為答案解析:無形參或無返回值都可以用void來,intchardouble分別是整型、字符型和實型若Samplevoidset(Sample&a),則Sample&a的含義是指向類Sample的名為aa是類Sample的對象,用來作函數(shù)Set()的形將a的地址賦給變量解析:(P53)成員函數(shù)使用對象的作為形參。該函數(shù)的功能是將已知對象的所有數(shù)據(jù)成員的值拷貝給相應(yīng)對象的所有數(shù)據(jù)成員,不會建立臨時對象,這里是對象的所以選擇B。下列關(guān)于靜態(tài)數(shù)據(jù)成員的描述中正確的是在編譯指令中,宏定義使用哪個指令答案解析:(P7)#if條件編譯,#include文件包含,#error類的析構(gòu)函數(shù)是對一個對象進行以下哪種操作時自動調(diào)用的是答案解析:(P80)關(guān)于new運算符的下列描述中,錯誤的是使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運算符delete。靜態(tài)成員表示整個類范圍的信息,其以關(guān)鍵字static開始,包括靜態(tài)數(shù)據(jù)成員和靜態(tài)成員應(yīng)在類體外對靜態(tài)數(shù)據(jù)成員進行初始化(靜態(tài)數(shù)據(jù)成員的初始化與它的控制權(quán)限無)靜態(tài)數(shù)據(jù)成員初始化時前面不加static關(guān)鍵字,以免與一般靜態(tài)變量或?qū)ο笕绻怉被說明成類B的,則類B不一定是類A的類B的成員即類A類A的成員即類B類A的成員函數(shù)不得類B的成員解析:(P113)關(guān)系不能被繼承,關(guān)系是單向的,關(guān)系不具有傳遞性。但是函數(shù)假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa++;b=a*++bb;},則執(zhí)行Ax(4,5);語句4和4和4和20和答案下列運算符中,在C++語言中不能重載的是*/答案C++語言建立類族是通過解析:(P174)在C++語言中,數(shù)據(jù)封裝要解決的問題是解析:(P39)封裝是指把對象屬性和操作結(jié)合在一起,構(gòu)成獨立的單元,它的信息對外界是的工具,對象是封裝的實現(xiàn)。類的控制機制體現(xiàn)在類的成員中可以有公有成員、私有成員和保護成員。對于外界而言,只需要知道對象所表現(xiàn)的外部行為,而不必了解實現(xiàn)細(xì)節(jié)。封裝二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答。錯填、不填均無分 [解析] [解析]內(nèi)聯(lián)函數(shù),用來提高程序運行速度。在類定義的函數(shù)也是內(nèi)聯(lián)函數(shù) [解析]向量方法的使用。front():返回向量中的第1個對象。back():返回向量中的最)C++ [解析] [解析] [解析] [解析]宏定義#define,文件包含#include和條件編譯#if構(gòu)造函數(shù)、析構(gòu)函數(shù)和函數(shù)中,不是該類成員的是 [解析 函數(shù)不是類成員,但可以類中成員 [解析]setw(intn):用來設(shè)置n [解析] [解析]istream和ostream的直接基類是ios [解析]front():返回向量中的第1個對象。back():operator[](size_type,n):返回向量中的第n+1個對象(下標(biāo)為n的向量元素)intcout<<"i="<<hex [解析] 答案:(P51)[解析]函數(shù)參數(shù)傳遞有傳值和傳兩種使用new為int數(shù)組動態(tài)分配10個空間是 答案:(P10)newint[10];[解析]newdelete動態(tài)開辟空間和刪除空間。newint[10],注意不要寫成new [解析]面向?qū)ο蟮乃膫€特征。程序由一組抽象的對象組成,一組對象的共同特征抽象出類的概念,類是對象的抽象,對象是類的實例。封裝即將數(shù)據(jù)和操作緊密結(jié)合提供的接口,外部通過接口實現(xiàn)數(shù)據(jù),提供安全性。繼承繼承解決了類的擴展性。多態(tài)性不同對象調(diào)用相同 答案[解析]oct表示八進制,hex正確的語句是 答案:(P200)ifstream[解析]文件操作中ifstream (3)三、改錯題(本大題共5小題,每小題2分,共10分)下面的類定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并給出修改意見。class{inta;ABC(int答案:ABC(intaa)a(aa){}[修改]ABC(int#include<iostream.h>classTintp;T(intvoid{T}答案:[修改[解析]protected保護類型的成員,不能在類外#include<iostream>usingnamespacestd;classDate;classTime(inth,intm,intvoidshow(Date&d);intclassDate(intm,intd,intvoidTime::show(Date&);intvoidTime::show(Date&{cout<<d.month<<"-"<<d.day<<"-"<<d.year<<endl;}void{TimeDate答案:voidTime::show(Date&);成員函數(shù)作為函數(shù),要加friend[修改]friendvoidTime::show(Date#include<iostream.h>classTest{inta,b;intgetmin(){return(a<b?a:b);}intvoidsetValue(intx1,intx2,intintGetMin();int{intd=getmin();return(d=d<c?d:c);}void{Testt1;cout<<t1.getmin()<<endl;}答案:cout<<t1.getmin()<<endl;采用默認(rèn)的權(quán)限即私有的,在外部無法[修改#include<iostream>#include<string>usingnamespacestd;template<classT>voidSwap(T&a,T&{Ttemp;}void{intchars1[]="o",s2[]="hi";}答案:chars1[]="o",s2[]="hi";使用Swap(s1,s2)調(diào)用交換的是地址。字符指針作實[修改]char*s1="四、完成程序題(本大題共5小題,每小題4分,共20分#include<iostream.h>classA{inta,b; ;//定義構(gòu)造函數(shù),使參數(shù)i和j的默認(rèn)值為{a=i;b=j;}//在函數(shù)體中用i初始化a,用j初始化{A ;//調(diào)用帶參構(gòu)造函數(shù)生成由p//使a和b成員分別被初始化為4和}答案:A(inti=0,intj=0),p=new[解析]構(gòu)造函數(shù)帶默認(rèn)參數(shù)為0,使用new4,5#include<iostream.h>voidsum(inti){staticint;}voidmain{intfor }答案[解析]根據(jù)結(jié)果和調(diào)用形式,得出規(guī)律。注意靜態(tài)成員能保留上次運行的結(jié)果。循環(huán)了3下面程序運行的結(jié)果是:5+10=15#include<iostream.h>classTest{intx,y;Test()voidSetxy(intx,inty){ voidshow(){ void{Testptr;}答案:(*this).x=x;[解析]形參同數(shù)據(jù)成員同名,使用this來#include<iostream.h>#include<iomanip.h>classArrfloatintn;//數(shù)組大?。ㄔ貍€數(shù))Arr(int{p=new}{}intGetn(void){return}float&operator[](int{}voidvoid{intfor(i=0;i<this-{ifcout<<endl;}}void{Arrfor(inti=0;i<a.Getn();i++)a[i]=i*2;}答案:deletep;,return#include<iostream.h>classA{inta;A(intintGeta(){returnvoidclass{Aintb;B(inti,int voidvoid{Bfor(int}答案五、程序分析題(本大題共4小題,每小題5分,共20分classaa(inti=10){x=i;cout<<"a:"<<x<<endl;}intx;classb:publicb(inti):A(i){x=i;cout<<"b:"<<x<<","<<a::x<<endl;}aA;intx;voidclassLocationintvoidinit(intinitX,intinitY);intGetX();intvoidLocation::init(intinitX,int}int{return}int{return}voiddisplay(Location&{cout<<rL.GetX()<<"}void{LocationLocationrA-for(inti=0;i<5;i++)}答案:733117344#includeintvoidfun(int*pa,intn);voidmain(){intm=8;}voidfun(int*pa,int{for(inti=0;i<n-}答案#include<iostream.h>classA{int*a;A(intx=0):a(new~A(){deleteintgetA(){return*a;}voidsetA(intx)void{AA*p=&x2;}答案[解析]p指向?qū)ο髕2,x2.getA()+5該值為8即x2.a=8;10+x1.getA()為10,x1.a=10六、程序設(shè)計題(本大題共1小題,共10分classvehicleintwheels;//車輪數(shù)floatweight;//重量voidinit(intwheels,floatweight);intget_wheels();floatget_weight();voidprint();voidvehicle::init(intwheels,float}int{return}float{returnvoid{cout<<"車輪數(shù):"<<wheels<<","<<"重量答案:classcar:public{private:intpassengers;voidinit(intwheels,floatweight,intpass);intgetpassenger();voidvoidcar::init(intwheels,floatweight,intint{returnpassengers;}voidcar::print()cout<<"可載人數(shù)C++程序設(shè)計模擬試卷(五一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中分。靜態(tài)成員函數(shù)沒有this屬性,不是對象的特征,而this表示的是隱藏的對象的指針,因此靜態(tài)成員函數(shù)沒有this指針類中只有一個拷貝(副本),因此它對象的成員時要受到一些限制:靜態(tài)成員函數(shù)可以直接類中說明的靜態(tài)成員,但不能直接類中說明的非靜態(tài)成員;若要非靜態(tài)成員時,必須通過參數(shù)傳遞的方式得到相應(yīng)的對象,再通過對象來。在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始化并執(zhí)行其他管態(tài)性,增加方便性。所有在函數(shù)中定義的變量,都是解析:(P136)變量類可分為兩類:全局變量和局部變量到源程序結(jié)束。全局變量增加了函數(shù)之間數(shù)據(jù)聯(lián)系的,全局變量作用域內(nèi)的函數(shù),均可使用局部變量:在函數(shù)定義的變量稱為局部變量,其作用域為:從定義變量的位置開始auto變量意味著變量的空間的分配與釋放是自動進行的。說明符auto可以省略。函數(shù)static變量是定義在函數(shù)體內(nèi)的變量,存放在靜態(tài)區(qū),不用??臻g儲空間的釋放而假定AB為一個類,則執(zhí)行“ABa(2),b[3],*p[4];”語句時調(diào)用該類構(gòu)造函數(shù)的次數(shù)A.B.C.D.答案答案已知f1和f2是同一類的兩個成員函數(shù),但f1不能直接調(diào)用f2,這說明f1和f2f1不是靜態(tài)函數(shù),f2f1是靜態(tài)函數(shù),f2一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為解決定義二義性問題的方法有解析:(P139)解決二義性問題主要要兩種方法:(1)賦值兼容規(guī)則;(2)在main函數(shù)中可以用p.a的形式派生類對象p的基類成員a,其中a是解析:(P132)公有成員可以在類外,保護類型成員可以在派生類中,但不能在類外,在main函數(shù)中,說明a是公有成員。只有公有繼承時a才能是公有的,所以D項正確在C++中不返回任何類型的函數(shù)應(yīng)該說明為答案解析:無形參或無返回值都可以用void來,intchardouble分別是整型、字符型和實型若Samplevoidset(Sample&a),則Sample&a的含義是指向類Sample的名為aa是類Sample的對象,用來作函數(shù)Set()的形將a的地址賦給變量解析:(P53)成員函數(shù)使用對象的作為形參。該函數(shù)的功能是將已知對象的所有數(shù)據(jù)成員的值拷貝給相應(yīng)對象的所有數(shù)據(jù)成員,不會建立臨時對象,這里是對象的所以選擇B。要實現(xiàn)動態(tài)聯(lián)編必須 解析:(P170)通過基類指針或基類來調(diào)用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性,靜態(tài)多態(tài)性通過重載來實在派生類中定義虛函數(shù)時,可以與基類中相應(yīng)的虛函數(shù)不同的是實現(xiàn)兩個相同類型數(shù)加法的函數(shù)模板的是add(Tx,TTTadd(TTadd(Tx,T答案解析:(P63)是和參數(shù)具有相同類型,需要返回值。A無返回值時要用void,B形參無類型,C形參y,所以選擇D下列不是描述類的成員函數(shù)的是解析:(P109)函數(shù)雖然不是成員函數(shù)但是可以類所有成員。構(gòu)造函數(shù)、析構(gòu)函數(shù)和拷貝構(gòu)造函數(shù)(構(gòu)造函數(shù))都是類的特殊函數(shù)用于對象的創(chuàng)建和撤銷,所以選擇C項。繼承機制的作用是解析:(P40),所以選擇CA1-答案解析:(P118)A中p是指針即地址,錯誤;B選項中A1成員函數(shù)指針的:指向short型的Screen類的成員的指針定義如下shortScreen::*ps_Screen可以用_height的地址初始化如下:short類成員的指針必須總是通過特定的對象或指向改類型的對象的指針來。是通過使用兩個指向成員操作符的指針(針對類對象和的.*,以及針對指向類對象的指針的->*)。如果采用動態(tài)多態(tài)性,要調(diào)用虛函數(shù)的是解析:(P171)基類指針或者基類的調(diào)用虛函數(shù)都會產(chǎn)生動態(tài)多態(tài)若有以下定義,則說法錯誤的是int變量p,其中*表示p變量p經(jīng)初始化,獲得變量a變量p解析:指針變量如同其他變量一樣,在使用之前必須先。指針變量的格式為<類型名>*<自定義類型。<變量名>是用戶自定義的標(biāo)識符。符號*。*表示指針,p是變量,p指向一個整型的變量,值為a的地址值,*p=100C++語言建立類族是通過解析:(P174)二、填空題(本大題共20小題,每小題1分,共20分)案。錯填、不填均無分。假設(shè)inta=1,b=2;則表達(dá)式(++a/b)*b--的值為 [解析]cout<<(++a/b)*b--時,先++a/b值為1,后1*b--,先取b=2,結(jié)果為2,再讓b=1 答案:(P80)對象的[解析]構(gòu)造函數(shù)使用對象的來初始化一個新對象,避免臨時產(chǎn)生對象 靜態(tài)成員函數(shù)、函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是 [解析]函數(shù)不是類成員,但可以類成員。類的封裝性保證了數(shù)據(jù)的安全,但引入,雖然類是方便了,但確實破壞類的安全性在下面的類定義中,私有成員 class{intX,Y;intintSetZero(intzeroX,intzeroY);intlength,height;voidinit(intinitX,intinitY);intGetX();int答案 [解析]多態(tài)性包括靜態(tài)(編譯時)的和動態(tài)(運行時)C++中語句constchar*const o”;所定義的指針p和它所指的內(nèi)容都不能 答案:(P12)[解析]使用const [解析]在普通函數(shù)前面用virtual 對賦值運算符進行重載時,應(yīng)為 [解析]運算符重載的方法有或者成員函數(shù)兩種途徑,但是賦值運算符只能使用成員函數(shù)的 答案:(P51)[解析]函數(shù)參數(shù)傳遞有傳值和傳兩種 [解析] [解析] [解析]是C不具有使用方法,它表示變量的別名,在函數(shù)中使用很頻繁,因為調(diào)用形式同如果要把類B的成員函數(shù)voidfun()說明為類A的函數(shù),則應(yīng)在類A中加入語句 答案:(P111)friendvoidB::fun();[解析]成員函數(shù)作為另外一個類的函數(shù)時,使用類作用域運算符::如果要把PI為值為3.14159類型為雙精度實數(shù)的符號常量,該語句是 答案:(P6)constdoublePI(3.14159);或者constdoublePI=3.14159;[解析]使用const符號常量,常量和常量值可以用括號也可以賦值號 [解析]cin、cout、cerr和clog中cin用于輸入,cout用于輸出,cerr、clogintdoublec=32;程序的輸出結(jié)果 答案 答案:(P151)ector<int>V2(V1);[解析]采用向量初始化另一個向量的形式:vector<type>三、改錯題(本大題共5小題,每小題4分,共20分#include<iostream.h>classA{intx;A(intfriendintintmin(A&a,A{return}void{A}答案:cout<<a.min(a,b)<<endl;函數(shù)不是類成員,所以對象a不能使用a.min(a,b)這種方。min就是一個普通的函數(shù)[修改#include<iostream.h>classshapevirtualintarea(){returnclassrectangle:publicinta,voidsetLength(intx,inty){a=x;b=y;}intarea(){returna*b;}void{rectangler;shapes1,*s2=&r;cout<<r.area()<<endl;cout}答案:shapes1,*s2=r;指針使用錯誤。s是指針使用它指向?qū)ο蟮某蓡T有兩種方法,有下面兩行可知,使用的是。[修改]改為shape#include<iostream.h>template<classT>classATx,y,s;A(Ta,Tvoidshow()}void{A<int>add(10,100);}答案:[修改]A[解析]Aadd(10,100);類模板的使用,參數(shù)實例化后生成模板類。用類模板定義對象時要指定生成具有n#include<iostream.h>voidmain(){intn;inta[n];}答案:inta[n];生成具有n個元素的動態(tài)數(shù)組,要使用new,所以inta[n];[修改]int*a=new#include<iostream.h>classA{inti;virtualvoidA(intclassB:public{intj;void{cout<<"B::fun()\
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度派遣企業(yè)IT運維工程師合同3篇
- 二零二五年度出國勞務(wù)人員工資支付及福利保障合同3篇
- 2025年度智能車庫使用權(quán)轉(zhuǎn)讓合同
- 二零二五年度木工班組承包安全生產(chǎn)管理合同3篇
- 2025年度兼職用工協(xié)議替代勞動合同新趨勢
- 2025年度錨具招標(biāo)文件編制與合同范本修訂說明
- 二零二五年度山坪塘環(huán)境整治與水利生態(tài)修復(fù)承包合同3篇
- 二零二五年度電梯安裝與綠色建筑認(rèn)證合同
- 二零二五年度股票期權(quán)交易稅收優(yōu)惠政策執(zhí)行合同
- 二零二五年度金融理財產(chǎn)品銷售服務(wù)誠意金合同
- 2025屆河北省衡水市衡水中學(xué)高考仿真模擬英語試卷含解析
- 新修訂《保密法》知識考試題及答案
- 電工基礎(chǔ)知識培訓(xùn)課程
- 住宅樓安全性檢測鑒定方案
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年五年級上學(xué)期期末考試數(shù)學(xué)試題
- 市政道路及設(shè)施零星養(yǎng)護服務(wù)技術(shù)方案(技術(shù)標(biāo))
- 選擇性必修一 期末綜合測試(二)(解析版)2021-2022學(xué)年人教版(2019)高二數(shù)學(xué)選修一
- 《論語》學(xué)而篇-第一課件
- 《寫美食有方法》課件
- 學(xué)校制度改進
- 各行業(yè)智能客服占比分析報告
評論
0/150
提交評論