C++程序設計知識點實例解析智慧樹知到答案2024年青島大學_第1頁
C++程序設計知識點實例解析智慧樹知到答案2024年青島大學_第2頁
C++程序設計知識點實例解析智慧樹知到答案2024年青島大學_第3頁
C++程序設計知識點實例解析智慧樹知到答案2024年青島大學_第4頁
C++程序設計知識點實例解析智慧樹知到答案2024年青島大學_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++程序設計知識點實例解析青島大學智慧樹知到答案2024年第一章測試

若有定義doublexx=3.14,*pp=&xx;則表達式*pp等價于()

A:*xxB:&xxC:xxD:&3.14

答案:C有以下程序片段:

stringstr("HelloC++");

cout<<str.substr(5,3);

則程序的輸出結果是()

A:C++B:++C:HelloD:loC++

答案:A有以下程序片段:

stringstr("HelloC++");

cout<<str.insert(8,"World");

則程序的輸出結果是()

A:HelloC++WorldB:HelloC+World+C:HelloWorldC++D:編譯報錯無法運行

答案:A下面對引用的描述錯誤的是()

A:引用是某個變量或對象的別名B:對引用初始化可以使用任意類型的變量C:引用與其代表的對象具有相同的地址D:建立引用時,要對它初始化

答案:B編譯系統(tǒng)區(qū)分重載函數的依據是()。

A:對應位次上參數的名字不同B:對應位次上參數的類型不同C:函數的返回值類型不同D:總的參數個數不同

答案:BD若函數的返回值為引用類型,則該函數的調用表達式可以作為賦值運算的左值。()

A:對B:錯

答案:A函數可設置默認參數,但不允許將一個函數的所有參數都設置為默認參數。()

A:對B:錯

答案:B當使用setw(intn)、setprecision(intn)等帶參數的輸入/輸出格式控制符時,需要在程序開頭包含頭文件iomanip。()

A:對B:錯

答案:A運算符new分配的空間由運算符delete釋放。()

A:對B:錯

答案:A任何函數都可以聲明為內聯(lián)函數()

A:錯B:對

答案:A

第二章測試

下列關于析構函數描述正確的是()

A:析構函數在程序中必須被顯示調用B:析構函數體中必須有delete語句C:析構函數返回值類型是voidD:析構函數既沒有參數也不可重載

答案:D有如下類定義:

classSample{

intn;public:Sample(inti=0):n(i){}voidsetValue(intn0)};

成員函數setValue在類外實現(xiàn)的正確形式是()

A:voidsetValue(intn0){n=n0;}B:Sample::setValue(intn0){n=n0;}C:setValue(intn0){n=n0;}D:voidSample::setValue(intn0){n=n0;}

答案:D有如下程序片段:

classSample{

intn;public:Sample(inti=0):n(i){}voidsetValue(intn0){n=n0;}};SampleSobj;Sample*ptr=newSample;

則下面對成員函數setValue訪問形式正確的是()

A:ptr->setValue(5)B:Sobj.setValue(5)C:Sobj->setValue(5)D:ptr.setValue(5)

答案:AB有如下程序片段:

classSample{

intn;

protected:

intm;public:Sample(inti=0,intj=0):n(i),m(j){}voidsetValue(intn0,intm0){n=n0;m=m0;}};int

main(){SampleObj;

//①

Obj.n=3;

//②

Obj.m=4;

//③

Obj.setValue(3,4);//④

return0;}則主函數中有誤的語句是()

A:都不是B:④C:②③D:①

答案:C下類有關類的構造函數和析構函數敘述正確的是()

A:類的構造函數和析構函數都是在程序中被顯示調用,而不能由系統(tǒng)自動隱式調用B:類的構造函數可以有多個,互為重載關系C:類的析構函數可以有多個,互為重載關系D:類的構造函數和析構函數都是在程序中被自動隱式調用,而不能由系統(tǒng)顯示調用

答案:B有如下類定義:

classTEST{

inta;public:intGetRef()const

//①{return&a;}intGetValue()const//②{returna;}voidSet(intn)const//③{a=n;}friendvoidShow(TESTaa)const//④{cout<<a;}};

則類中成員函數定義錯誤的序號是()

A:①B:③C:②D:④

答案:ABD類定義中數據成員初值的設定既可以在聲明數據成員時進行,也可以在構造函數中進行。

()

A:對B:錯

答案:B作用域運算符::只能用于類成員名的所屬類限定。()

A:錯B:對

答案:A訪問類對象成員或結構變量成員時,使用的運算符有.和->。()

A:對B:錯

答案:A若類AB的聲明中沒有析構函數和構造函數,則系統(tǒng)會自動為類AB添加缺省的析構函數~AB(){};和構造函數AB(){};()

A:對B:錯

答案:A

第三章測試

下列關于常類型const的敘述錯誤的是()。

A:通過常對象可以調用一般成員函數B:不能修改常對象的數據成員C:必須使用成員初始化列表初始化常數據成員D:常成員函數中不能修改對象的數據成員

答案:A下列關于常成員的敘述正確的是()。

A:常成員函數只能由常對象調用B:常成員函數不能更新對象的狀態(tài)C:常數據成員可以被類對象共享D:常數據成員可以在構造函數體中初始化

答案:B假定Sample類中的成員函數show空參無返回值,且不會更改Sample類中數據成員的值,則show函數在類內正確的聲明形式是()

A:voidPrintconst();B:voidconstPrint();C:voidPrint()const;D:constvoidPrint();

答案:C有如下類聲明:

classSample{

intk;constintm;public:Sample(intk1,intm1);};

則下列構造函數的定義形式中錯誤的是()

A:Sample::Sample(intk1,intm1):k(k1){m=m1;}B:Sample::Sample(intk1,intm1):k(k1),m(m1){}C:Sample::Sample(intk1,intm1):m(m1),k(k1){}D:Sample::Sample(intk1,intm1):m(m1){k=k1;}

答案:A下面程序中橫線部分應填入的內容是(

classTEST{public:TEST(doubled):data(d){}voidPrint(){cout<<data<<endl;}staticintcount;private:doubledata;};

count=0;

A:staticintTEST::B:intTEST::C:intD:staticint

答案:B下列關于靜態(tài)成員的描述錯誤的是()。

A:靜態(tài)數據成員的初始化不使用其構造函數B:靜態(tài)成員可分為靜態(tài)數據成員和靜態(tài)成員函數C:靜態(tài)成員函數不能直接訪問非靜態(tài)數據成員D:靜態(tài)數據成員定義后必須在類體內進行初始化

答案:D下面程序的執(zhí)行結果是()

classSample{

intn;public:Sample(inti){n=i;}friendintadd(Sample&s1,Sample&s2);};intadd(Sample&s1,Sample&s2){

returns1.n+s2.n;}intmain(){

Samples1(10),s2(20);cout<<add(s1,s2)<<endl;}

A:10B:20C:40D:30

答案:D下列關于友元關系描述正確的是()。

A:友元不是類的成員,但具有和類的成員函數一樣的數據訪問權限B:友元屬于類的成員,因此具有和類的成員函數一樣的數據訪問權限C:友元關系具有傳遞性,即B是A的友元,C是B的友元,則C一定是A的友元D:友元關系具有對稱性,即B是A的友元,則A一定是B的友元

答案:A下列關于數據共享在類中描述正確的是()。

A:類通過靜態(tài)數據成員實現(xiàn)類對象間的數據共享B:類的封裝性決定了類是封閉的,和外界不建立共享機制C:類通過友元聲明實現(xiàn)類內數據向外界友元函數的共享D:一個類的所有對象都是獨立的,彼此間不共享任何數據

答案:AC下列函數中具有當前類的隱含指針this的是()。

A:靜態(tài)成員函數B:友元函數C:構造函數D:析構函數

答案:CD

第四章測試

下列函數中不能重載的是()

A:構造函數B:靜態(tài)成員函數C:析構函數D:友元函數

答案:C下列運算符中不能重載的是()

A:newB:deleteC:!D:sizeof

答案:D下列運算符必須重載為類成員函數的是()

A:++B:=C:==D:<=

答案:B假定復數類MyComplex聲明如下:

classMyComplex{

floatreal,imag;public:

MyComplex(floatr=0,floati=0);

MyComplex(constMyComplex&other);

voidPrint()const;MyComplexoperator+(constMyComplex&other);friendMyComplexoperator*(constMyComplex&c1,constMyComplex&c2);};有MyComplexX(1,2),Y(3,4),Z(5,6);則對表達式X+Y;以及X*Z;理解正確的是(

A:X.operator+(Y);

operator*(X,Z);B:operator+(X,Y);

operator*(X,Z);C:operator+(X,Y);

X.operator*(Z);D:X.operator+(Y);

X.operator*(Z);

答案:A假定復數類MyComplex聲明如下:

classMyComplex{

floatreal,imag;public:

MyComplex(floatr=0,floati=0);

MyComplex(constMyComplex&other);

voidPrint()const;MyComplexoperator+(constMyComplex&other);friendMyComplexoperator*(constMyComplex&c1,constMyComplex&c2);};有MyComplexX(1,2),Y(3,4),Z(5,6);則對表達式X+Y*Z;的理解正確的是(

A:operator+(X,operator*(Y,Z));B:operator*(X.operator+(Y),Z);C:X.operator+(operator*(Y,Z));D:(operator+(X,Y)).operator*(Z);

答案:C下列關于類成員運算符重載和友元運算符重載說法正確的是()

A:成員運算符重載函數中具有this指針,友元運算符重載函數中不具有this指針B:成員運算符重載函數中不具有this指針,友元運算符重載函數中也不具有this指針C:成員運算符重載函數中不具有this指針,友元運算符重載函數中具有this指針D:成員運算符重載函數中具有this指針,友元運算符重載函數中也具有this指針

答案:A假定類TEST中重載運算符<<,則運算符<<在類TEST中正確的聲明形式為()

A:friendostream&operator<<(constTEST&obj);B:ostream&operator<<(constTEST&obj);C:ostream&operator<<(ostream&output,constTEST&obj);D:friendostream&operator<<(ostream&output,constTEST&obj);

答案:D假定類Sample中重載運算符>>,則運算符>>在類Sample中正確的聲明形式為()

A:friendistream&operator>>(istream&input,constSample&obj);B:friendistream&operator>>(istream&input,Sample&obj);C:friendSample&operator>>(constSample&obj);D:friendSample&operator>>(istream&input,constSample&obj);

答案:B下標運算符[]在類中既可以重載為友元也可以重載為類成員。()

A:對B:錯

答案:B重載的運算符保持原來的優(yōu)先級和結合性以及操作數的個數。()

A:對B:錯

答案:A

第五章測試

有以下程序片段:classBase{private:inta;

protected:

intb;

public:

Base(inti=0,intj=0):a(i),b(j)

{}};classDerived:publicBase{private:intc;

protected:

intd;

public:

Derived(inti=0,intj=0,intm=0,intn=0):Base(i,j),c(m),d(n)

{}};intmain(){Derivedobj;

obj.a=1;//①

obj.b=2;

//②

obj.c=3;

//③

obj.d=4;

//④

return0;}則主函數中所有語法有誤的語句是(

A:①B:①②C:①②③④D:①②③

答案:C有以下程序片段:classBase{private:inta;

protected:

intb;

public:

Base(inti,intj):a(i),b(j)

{}};classDerived:publicBase{private:intc;

protected:

intd;

public:

Derived(inti,intj,intm,intn):Base(i,j),c(m),d(n)

{}

voidfun()

{cout<<a<<endl;//①

cout<<b<<endl;//②

cout<<c<<endl;//③

cout<<d<<endl;//④}};則fun函數中語法有誤的語句是(

A:②B:④C:③D:①

答案:D下列關于繼承方式public的描述錯誤的是()。

A:基類中的public成員在派生類中仍為public成員B:基類中的private成員在派生類中仍為private成員C:基類中的protected成員在派生類中仍為protected成員D:基類中除了private成員以外,其它成員在派生類中都可以被直接訪問

答案:B派生類對象直接訪問同名成員,在下列情形中不會出現(xiàn)二義性的是()

A:單繼承中,直接基類和間接基類各自聲明有同名的成員,派生類并未聲明該同名成員B:單繼承中,派生類和直接基類各自聲明有同名的成員C:多繼承中,同名成員聲明只出現(xiàn)在派生類的多個直接基類中,派生類并未聲明該同名成員D:多繼承中,派生類的多個直接基類具有共同的間接基類,派生類并未聲明該同名成員

答案:AB具有虛基類的派生類在創(chuàng)建對象時,最先被調用的是()。

A:虛基類的構造函數B:派生類自己的構造函數C:非虛基類的構造函數D:派生類中子對象類的構造函數

答案:A有以下程序片段:classA{private:inta;

public:

A(inti=0):a(i)

{}};classB{private:intb;

public:

B(intj=0):b(j)

{}};classC:publicA{private:

intc;BBobj;

public:

C(inti,intj,intk):c(k),Bobj(j),A(i)

{}};intmain(){CCobj(1,2,3);

return0;}則主函數中對象Cobj在創(chuàng)建時,構造函數調用順序從先到后依次是()

A:類B構造函數、類A構造函數、類C構造函數B:類C構造函數、類B構造函數、類A構造函數C:類A構造函數、類C構造函數、類B構造函數D:類A構造函數、類B構造函數、類C構造函數

答案:D基類中的公有和保護成員在公有派生類中將成為()。

A:仍然相應保持為公有成員和保護成員B:全部變成公有成員C:全部變成保護成員D:全部變成私有成員

答案:AC++的繼承性允許派生類繼承基類的()。

A:所有特性,但不允許增加新的特性或重定義基類的特性B:部分特性,但不允許增加新的特性或重定義基類的特性C:所有特性,并允許增加新的特性或重定義基類的特性D:部分特性,并允許增加新的特性或重定義基類的特性

答案:C重復繼承關系中,若公共基類被聲明為其直接派生類的(),則能保證后代派生類中只保留一份該公共基類的成員。

A:公有繼承B:子對象C:私有繼承D:虛基類

答案:D公有繼承方式下,類A是類B的虛基類,則類B聲明的正確形式是()

A:classB:virtualpublicAB:classA:virtualpublicBC:classA:virtualpublicclassBD:classB:virtualpublicclassA

答案:A

第六章測試

在繼承關系中,下列函數中能被派生類繼承的是()。

A:基類的構造函數B:基類成員運算符重載函數C:基類的析構函數D:基類的友元函數

答案:B下列函數中可以聲明為虛函數的是()

A:靜態(tài)成員函數B:友元函數C:析構函數D:構造函數

答案:C下列函數中,不具有自身類隱含指針this的是()

A:虛函數B:靜態(tài)成員函數C:構造函數D:析構函數

答案:B下列有關繼承關系中虛函數,描述正確的是()

A:函數名相同、參數不相同、返回值類型不相同B:函數名相同、參數相同、返回值類型相同C:函數名相同、參數相同、返回值類型不相同D:函數名相同、參數不相同、返回值類型相同

答案:B下列對虛函數的訪問方式中,能夠在運行時動態(tài)綁定具體類的虛函數,從而實現(xiàn)類的多態(tài)性的是()

A:派生類指針->虛函數B:基類指針->虛函數C:派生類對象.虛函數D:基類對象.虛函數

答案:B下面有關抽象類描述錯誤的是()

A:抽象類可以創(chuàng)建對象B:抽象類中可以包含數據成員以及構造函數和析構函數C:抽象類的派生類可以創(chuàng)建對象的必要條件是實現(xiàn)了所有的純虛函數D:抽象類是包含有純虛函數的類

答案:A派生類中重新定義虛函數時,不能與基類中的虛函數保持一致的是()

A:函數參數B:函數名C:函數返回值類型D:函數體

答案:D基類中的虛函數,在派生類中()

A:無論是否重新定義,都默認為虛函數B:無需重新定義C:若重新定義,必須加virtual聲明才能成為虛函數D:若不重新定義,則不再是虛函數

答案:A下面程序的運行結果是()

classB1{public:

virtualvoidshow()

{cout<<"B1::show()"<<";";

}};classB2{public:

voidshow()

{cout<<"B2::show()"<<";";

}};classD:publicB1,publicB2{public:

voidshow()

{cout<<"D::show()"<<";";

}};intmain(){B1b1;

B2b2;

Dd;

b1.show();

b2.show();

d.show();

return0;}

A:B1::show();B2::show();B1::show();B:B1::show();B2::show();B2::show();C:B1::show();B2::show();D::show();D:B1::show();B1::show();B1::show();

答案:C下面程序的運行結果是(

)classB1{public:

virtualvoidshow()

{cout<<"B1::show()"<<";";

}};classB2{public:

voidshow()

{cout<<"B2::show()"<<";";

}};classD:publicB1,publicB2{public:

voidshow()

{cout<<"D::show()"<<";";

}};intmain(){B1b1;

B2b2;

Dd;

B1*bp;

bp=&d;

bp->show();

return0;}

A:B2::show();B:B1::show();C:D::show();D:都不是

答案:C

第七章測試

下列關于類模板說法正確的是()

A:類模板中的數據成員具有相同的類型B:類模板就是抽象類C:類模板中的成員函數具有相同的返回值類型D:類模板實例化時,編譯器將根據給出的模板實參生成具體的類

答案:D下列關于類模板定義中的類型參數說法正確的是()

A:只可作為成員函數的參數類型B:只可作為數據成員的類型C:只可作為成員函數的返回類型D:三者皆可

答案:D有如下類模板聲明:template<typenameT>classTanyTemp{public:

TanyTemp(Tx1,Ty1)

{x=x1;y=y1;}

private:

Tx,y;};則執(zhí)行語句TanyTemp<int>iobject(23,32);生成的模板類為()

A:TanyTempB:iobject(23,32)C:TanyTemp<int>D:iobject

答案:C有下面程序片段:

floatarr[]={3.1,6.2,9.3,8.4,0.5,4.7,2.8,1.9};

intn1=sizeof(arr)/sizeof(float);

charstr[]="bacdef";

intn2=sizeof(str)/sizeof(char);

假定采用函數模板設計統(tǒng)一的排序函數sortData,使得函數調用sortData(arr,n1)和sortData(str,n2)能夠分別完成對數組arr以及數組str按元素數值(或ASCII碼)從小到大的排序,則函數模板SortData中類型參數的個數至少應為()

A:2B:3C:0D:1

答案:DC++使用模板可以減少重復勞動,提高代碼重用率()

A:錯B:對

答案:B聲明函數模板時,template<typename類型參數>與函數定義不能分開,兩者之間不能插入其它任何語句。()

A:對B:錯

答案:A一個函數模板只能生成一個模板函數。()

A:錯B:對

答案:A類模板可以生成若干個模板類,每個模板類又可定義若干個對象。()

A:錯B:對

答案:BC++語言中模板分為函數模板和類模板兩種。()

A:錯B:對

答案:B所有模板聲明都是以template<typename類型參數>開頭,其中關鍵字typename也可換為關鍵字class。()

A:錯B:對

答案:B

第八章測試

標準流對象cin、cout、cerr和clog中,用于與標準輸入設備(鍵盤)連接的是()

A:ceerB:clogC:coutD:cin

答案:D有下面程序片段:

stringss;

getline(cin,ss);

cout<<ss;

當輸入HelloVisualStudio!↙時,輸出的內容為()

A:HelloVisualStudioB:HelloVisualStudio!C:HelloD:HelloVisual

答案:DC++中,打開文件就是將這個文件與一個()建立關系,關閉文件就是取消這種關聯(lián)。

A:流對象B:指針C:結構體D:常量

答案:A

當輸入HelloVisualStudio!↙時,輸出的內容為()

A:HelloVisuB:HelloC:HelloVisD:HelloVisualStudio!

答案:C要求以二進制方式打開輸出文件file.dat,該文件位于D盤根目錄下(D:\file.dat),下列打開方式正確的是()

A:ofstreamoutfile("D:\file.dat",ios::binary);B:ofstreamoutfile("D:\\file.dat",ios::binary);C:ifstreaminfile("D:\\file.dat");D:ifstreaminfile("D:\file.dat");

答案:B下列關于ostream類成員函數ostream&write(char*buffer,intcount);描述正確的是()

A:該

溫馨提示

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

評論

0/150

提交評論