C++程序設計(面向對象進階)-北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年_第1頁
C++程序設計(面向對象進階)-北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年_第2頁
C++程序設計(面向對象進階)-北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年_第3頁
C++程序設計(面向對象進階)-北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年_第4頁
C++程序設計(面向對象進階)-北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

C++程序設計(面向對象進階)_北京郵電大學中國大學mooc課后章節答案期末考試題庫2023年一個try塊后面可以緊跟多個catch語句

參考答案:

正確

創建自定義異常類時,必須從exception類派生

參考答案:

錯誤

關于異常處理的流程,以下說法正確的是

參考答案:

如果某個try塊中的代碼拋出了一個異常,那么在這個異常被捕獲之前的所有語句都會被跳過_如果某個try塊中有throw語句,那么執行throw語句后,該try塊中throw語句之后的所有語句都會被跳過

以下代碼中,符合編碼規范的有

參考答案:

intnPersons;_stringmovieNo;

關于自定義異常類說法正確的是

參考答案:

從C++自帶異常類繼承來的自定義異常類通過調用其基類構造函數,可以將異常狀況的描述信息保留下來留待異常處理程序使用_自定義異常類的構造函數可以有參數

在被調函數中,如何將發生的錯誤告知主調函數?

參考答案:

可以使用被調函數返回值_可以使用被調函數的參數

關于重新拋出異常的說法不正確的是

參考答案:

重新拋出異常的throw語句可以放在try{}塊中

程序如果出現了一個整數溢出錯誤,則應該拋出的異常是

參考答案:

runtime_error

當使用參數將被調函數中的錯誤信息返回給主調函數時,被調函數的參數類型可以是:

參考答案:

int*

下述代碼中,statement應該如何寫才能使得程序輸出1intt=1;try{......throwt;......}catch(statement){cout<

參考答案:

inti

重載Vec2D類的賦值運算符時,賦值運算符函數的返回值類型應該是(請以代碼形式描述,不要用文字描述)

參考答案:

Vec2D&##%_YZPRLFH_%##Vec2D&

運算符重載的本質是__________

參考答案:

函數重載

從C++語法角度看,將<<或者>>重載為成員函數是可以的。

參考答案:

正確

重載后置++/--運算符時,參數參加相關運算

參考答案:

錯誤

&=運算符可以被重載

參考答案:

正確

對于下面類C,空白處要填寫一個運算符重載的函數原型,正確的有:classC{private:intx{0};inty{0};public:C()=default;_________________}

參考答案:

C

operator

++(int

dummy);_C

operator

-();

不能重載的運算符有

參考答案:

?:三元運算符_::運算符

如下代碼正常編譯并可正確運行,則僅僅通過閱讀下面的代碼,我們可以推測出:#includeintmain(){strings{"Hello"};s[2]='a';return0;}

參考答案:

string類中對[]運算符進行了重載_重載的[]運算符返回的是一個引用類型的數據(或者對象)_string的一個構造函數接收字符指針作為其參數

以下關于this指針說法正確的是

參考答案:

this指針不需要程序員顯式定義_this是c++關鍵字_使用this指針時,this指向當前對象

對于代碼Vec2Dv1(1,3);Vec2Dv2=v1;說法錯誤的是

參考答案:

調用了Vec2D的賦值運算符函數

關于Vec2D類中重載的+運算符,對于代碼Vec2Dr1,r2;//initializer1,r2;cout<

參考答案:

通過對象r1調用了重載的+運算符

將<<運算符重載為類Vec2D的成員函數后,則將Vec2D的對象r1和r2輸出到屏幕上的代碼的正確寫法是:

參考答案:

r1<<cout;r2<<cout;

++運算符的兩種不同重載方式的目的是:

參考答案:

區別前置++和后置++

對于代碼fstream("test.dat",ios::out|ios::binary);intx=654321;char*p=__________________;fs.write(p,sizeof(int));空白處應填寫什么表達式?(請不要加空格等無效字符)

參考答案:

reinterpret_cast(&x)

對于代碼std::stringfilename{"hello.txt"};ifstreamifs{filename};std::cout<

參考答案:

1

用于從文件中讀取數據的類的名字是__________

參考答案:

ifstream

seekp()和seekg()既可以將文件位置指示器向文件頭部移動,也可以向文件尾部移動

參考答案:

正確

將一個POD布局的對象以二進制的形式寫入到文件中,則文件中保存的實際上是對象中的數據域成員

參考答案:

正確

在使用流提取運算符讀取文本文件的內容時,數據之間可以使用制表符作為分隔。

參考答案:

正確

setprecision()函數對于整數的顯示沒有影響

參考答案:

正確

cin.get()一次只能讀入一個字符

參考答案:

正確

對于代碼片段:#include#includeusingnamespacestd;intmain(){fstreambinaryio;//Createstreamobject//Readarrayfromthefilebinaryio.open("array.dat",ios::in|ios::binary);charresult[10]={'\0'};binaryio.read(reinterpret_cast(result),20);cout<

參考答案:

屏幕上輸出了10個以上字符,程序出錯_屏幕上輸出了10個以上字符,程序結束,未報告錯誤

關于流插入運算符在寫文件時說法正確的有

參考答案:

流插入運算符可以自動識別緊跟其后的參數的數據類型并進行自動轉換_在文件輸出操作中,流插入運算符可以與setw()

等格式控制函數一同使用

下列打開scores.txt文件方法正確的是

參考答案:

ofstream

ofs;ofs.open(R"hello(c:\scores.txt)hello");_ofstream

ofs("c:\\scores.txt");

C++對于文件的讀寫操作,說法正確的是:

參考答案:

文件的讀寫操作是從文件位置指示器所指向的位置開始

對于代碼#include#includeusingnamespacestd;intmain(){fstreamoutput("test.dat",ios::out|ios::binary);if(output.fail()){cout<<"Erroropeningtest.dat"<

參考答案:

test.dat文件中存儲的是字符'1','2','3'的ASCII碼注意:關于“ASCII碼”的解釋,參見

/an

ASCII

code

is

the

numerical

representation

of

a

character

such

as

'a'

or

'@'

or

an

action

of

some

sort.

簡單來說,ASCII碼是字母在ASCII碼表中對應的整數編號

對于代碼inta=10;floatb=10.001;cout<

參考答案:

__1010.00110010.001

獲取C:盤總容量的語句是:

參考答案:

std::filesystem::pathp{R"(C:\temp\hello\world)"};std::filesystem::space(p).capacity;

判斷std::filesystem::path的對象p中保存的路徑是否存在的語句是:

參考答案:

exists(p);

使用cin對象獲取用戶輸入時,當用戶輸入字符a然后敲回車鍵,cin的緩沖區中說法正確的是

參考答案:

有字符a和換行符

下面代碼的橫線上,要填入什么保留字,才能使得編譯器報告該行出現錯誤?structB{virtualvoidfoo(){};};structD:publicB{voidfoo(inta)______;};voidD::foo(intx){return;}

參考答案:

override

在派生類中定義虛函數時,必須在函數名字前加上__________關鍵字

參考答案:

virtual

根據本單元所講,派生類與基類之間是________關系(請用課件中講解的英文答題)

參考答案:

isa##%_YZPRLFH_%##is-a

override特殊標識符可以修飾基類函數

參考答案:

錯誤

函數的overload是dynamicbinding

參考答案:

錯誤

類B繼承類A,代碼可以寫作:classB:A{//Somedatafieldandfunction};B是以公有繼承的方式繼承了A中的成員

參考答案:

錯誤

派生類繼承基類后,可以定義新的數據成員和函數成員

參考答案:

正確

C++11中的final特殊標識符可以用來說明

參考答案:

成員函數不可被覆寫_類不可被繼承

消除下述代碼compile階段語法錯誤的方式為classA{public:virtualintf()=0;};intmain(){Aa;(&a)->f();}

參考答案:

將第3行代碼中的=0去掉_將第6行及第7行代碼刪除

函數的override現象要求基類函數與派生類函數滿足下面的條件

參考答案:

函數名和函數返回值相同_函數參數個數、類型、次序相同_基類函數應為虛函數

對于下面代碼說法正確的有classA{public:A(intx){}};classB:publicA{public:B(){}};intmain(){Bb;}

參考答案:

在第三行代碼后加上A()=default;就能編譯通過_第七行改成B():A(0){}就能編譯通過_在第二行代碼后加上A(){}就能編譯通過

類B是類A的派生類,對于代碼Aa,*pa=&a;Bb,*pb=&b;下述說法正確的是

參考答案:

pa=pb是Upcast

關于抽象類的正確說法是

參考答案:

抽象類不可實例化

對于如下代碼classB{public:voidf(){}voidg(){f();}}classD:publicB{public:voidf(){}voidg(){B::f()}}intmain(){Bb,*pb=&b;Dd,*pd=&d;d.g();pd->B::g();return0;}對第14行代碼和第15行代碼說法正確的是

參考答案:

間接調用了B::f()間接調用了B::f()

對于如下代碼classB{public:voidf(){}voidg(){f();}}classD:publicB{public:voidf(){}voidg(){B::f()}}intmain(){Bb,*pb=&b;Dd,*pd=&d;b.f();pd->f();return0;}其中第14行代碼和第15行代碼分別調用的是

參考答案:

B::f()與D::f()

為了使得一個頭文件只被包含一次,除了使用#ifndefFILENAME_H#defineFILENAME_H//Thecontentsoftheheaderfile#endifFILENAME_H這種方法之外,還可以使用語句

參考答案:

pragma

聲明編譯期常量表達式的關鍵字是

參考答案:

constexpr

調用vector中的push_back()函數時,可能會導致當前vector對象重新申請內存并將已有的數據挪到新內存中

參考答案:

正確

deepcopy與shallowcopy的問題是由類中的指針類型成員引起的。

參考答案:

正確

immutableobject一旦創建之后,就不能通過任何方法改變其內容

參考答案:

錯誤

vector對象中可以保存的數據的類型包括

參考答案:

std::array_std::string_char*_int

一個類成為immutableclass的必要條件包括

參考答案:

所有數據域均設置為“私有”屬性_沒有能夠返回可變數據域對象的引用或指針的訪問器函數_沒有更改器函數

關于字符串字面量,下面哪些是正確的?

參考答案:

#include

#include

using

namespace

std::string_literals;int

main()

{

const

char*

s

=

R"(Hello\nWorld)";

std::cout

<<

s;}輸出:Hello\n

World_#include

#include

using

namespace

std::string_literals;int

main()

{

const

char*

s

=

R"Hello(Hello\nWorld)Hello";

std::cout

<<

s;}輸出:Hello\n

World_#include

#include

using

namespace

std::string_literals;//

main()..........std::string

s1

=

"Hello\0World";auto

s2=

"Hello\0World"s;s1.size()的值是5s2.size()的值是11

關于assert()和static_assert說法正確的有

參考答案:

static_assert(bool_expression,message)斷言只能用于編譯期,且bool_expression必須是編譯期常量表達式_static_assert和assert不能互換

對于下面的代碼,說法正確的是classA{public:A(inta=0){x=a;}staticvoidf1(){y++;};private:intx;staticinty;};intmain(){A::f1();return0;}

參考答案:

link階段報錯

下面代碼中,不正確使用代理構造的是

參考答案:

struct

A{

A():

A{2}

{}

A(int

x):

A{static_cast(x)}{}

A(double

d):A{}{}};

下面的代碼輸出結果是什么?strings1("HelloWorld");strings2("HelloKitty");cout<<(s1>=s2);

參考答案:

1

C++中用于文件輸入輸出的頭文件包括

參考答案:

ofstream_fstream_ifstream

一般情況下,使用對象作為函數的參數,要比使用對象的引用作為函數的參數,在運行時的開銷要大

參考答案:

正確

類的所有對象中的“this”指針都是指向同一個地址的。

參考答案:

錯誤

使用this指針之前,程序員必須先聲明this指針。

參考答案:

錯誤

下面這些代碼的功能是創建一個string對象s,并將其內容設置為字符串alohaworld,正確的有:

參考答案:

char*p="alohaworld";strings(p);_strings{'a','l','o','h','a','w','o','r','l','d'};_strings=string{"alohaworld"};

以下選項中,哪種方法可以將類中的函數成員聲明為內聯函數?

參考答案:

inline

void

A::f()

{

//do

something}_class

A

{

void

f()

{

//do

something

}};_class

A

{

inline

void

f();};void

A::f(){}

考慮如下代碼,在編譯器不做任何優化的情況下,Circlecircle1,circle2;circle1=Circle();circle2=Circle(5);中的匿名對象有

參考答案:

Circle()_Circle(5)

classHello的構造函數的原型可以寫為

參考答案:

Hello(char*p,char&q,char[]);_Hello(inta=0);

以下代碼中,第幾行有錯誤?classS{intx=7;intn(7);std::strings{"Hello"};inta[]={1,2,3};autob[]={1,2,3};public:S(){}};

參考答案:

3,5,6

對于如下代碼CirclecircleArray[3]={Circle(3),Circle(4)};沒有調用Circle類的哪些構造函數?上述代碼的編譯環境是C++11或者C++14。注意:在C++17中引入了“復制消除”,會對本題的結果產生重要影響。

參考答案:

Circle::Circle(Circle[])

下面的代碼輸出結果是什么?strings{""};s.append("ABCDEFG",3,2);cout<

參考答案:

DE

對于如下代碼:Circle*pCircle2=newCircle(5.9);釋放內存的正確語句是:

參考答案:

delete

pCircle2;

聲明內聯函數的關鍵字是

參考答案:

inline

boolx=1&&2;則x的值為

參考答案:

true

boolx=1&2;則x的值為

參考答案:

false

autox[]{1,2,3};編譯后,x的類型是int[]

參考答案:

錯誤

表達式:static_cast(3)/2與表達式:static_cast(3/2)是等價的。

參考答案:

錯誤

對于已有代碼chara[3]{'\0'},b[3]{'a'};char*constp=a;合法的后續語句是:

參考答案:

b[0]=(*p)++;_p[0]='a';

下列代碼能累加數組元素的有

參考答案:

int

x[]

{3,

5,

7};auto

sum{0};for(

int

i

=

0;

i<

3;

i++

)

sum+=*(x+i);_int

x[]

{3,

5,

7};auto

sum{0};for(

auto

i

:

x

)

sum+=i;

char*p=newchar(32);釋放內存的語句是:

參考答案:

deletep;_delete[]p;

對于語句int&x=y,y{0};說法正確的是

參考答案:

正確定義方法應該是inty{0},&x{y};_有語法錯誤

下列代碼正確的是

參考答案:

auto

a

{10};decltype(a)

y;

char*a=newchar[32];對應的釋放內存的語句,哪種寫法最好?

參考答案:

delete

[]

a;a

=

nullptr;

給定函數1voidf(inta,intb=1,intc=2){}和函數2voidf(intx,inty=3){}對于下面語句f(3,,1);來說,表述正確的是:

參考答案:

編譯器會對函數調用語句報錯

用于輸出語句中,代表標準輸出的對象是

參考答案:

cout

C++程序的入口點是哪個函數?

參考答案:

main

編譯器能幫我們檢查代碼的邏輯錯誤

參考答案:

錯誤

inta,b;cin>>a>>b;輸入12則a的值是2,b的值是1

參考答案:

錯誤

在你自己定義的類中如果要重載流插入運算符<<,你必須將該運算符重載為類的友元函數,而不是成員函數,否則就會出現非常奇怪的使用方式。

參考答案:

正確

如果類Hello中含有string類型的數據域成員s,那么s的初始化賦值表達式s{"Hello"}可以放在Hello類的構造函數的函數體中

參考答案:

錯誤

根據C99標準,C語言中可以使用bool關鍵字定義布爾變量

參考答案:

錯誤

下面代碼是否正確?//以C++17標準編譯#includeintmain(){if(intx{10};x-->0){x--;}std::cout<<x;return0;}

參考答案:

錯誤

對于代碼autox{2.0};decltype(x+1)y;y的類型是int

參考答案:

錯誤

對于代碼chars[]={'H','e','l','l','o'};for(auto&c:s){c++;}執行之后,s數組中存放的5個字符是是‘I','f','m','m','p'

參考答案:

正確

struct中,如果不指明成員的訪問控制屬性,則默認的訪問控制屬性是(請填寫C++關鍵字):

參考答案:

public

運算符>>原本的含義是左移運算符

參考答案:

錯誤

遵守編碼規范有助于

參考答案:

提升程序開發小組協作的效率_提升代碼的可閱讀性和可維護性

Forthestatement:int*a[10],*b;thecorrectdescriptionis[]

參考答案:

acanonlybervalue,butbcanbelvalue

Thestring"r\tu\r\"Okay?\"\n"willoccupy[]bytesmemory.

參考答案:

13

Inthefollowingstrings,thecorrectCidentifieris[]

參考答案:

_256

Thekeyword"unsigned"canmodifythekeyword[]

參考答案:

long

編譯器的英文是__________

參考答案:

compiler

C語言支持面向對象編程范式

參考答案:

錯誤

我們在C++學習過程中,選擇開發工具應盡量選擇簡單的、問世時間比較久的工具。因為這樣的工具易用且穩定。

參考答案:

錯誤

帶有純虛函數的類不可以實例化

參考答案:

正確

"xisdivisibleby3butcan'tbedivisibleby5"canbewrittenas[]

參考答案:

!(x%3)&&!(x%5==0)

關于編譯預處理,說法正確的是

參考答案:

#define

HELLO是定義了一個宏,名字叫HELLO

下面哪個語句定義了編譯期常量?

參考答案:

constintm=3;_constexprintm=3;

關于C++類型轉換說法正確的有

參考答案:

static_cast用于基礎數據類型轉換,也可以將指針轉換為void*類型指針_dynamic_cast主要用于繼承鏈上的指針類型或者引用類型轉換_reinterpret_cast用于將某個類型直接轉換為另外一個類型,轉換只是對原來的比特信息進行新的解釋

C++中的final關鍵字可以用于

參考答案:

放在類定義中類名后面,表示該類不能被繼承_放在虛函數后面,表示該虛函數不可被覆寫

關于名字空間,說法正確的是

參考答案:

程序員可以定義自己的名字空間

本課程討論區不建議問下列哪些問題?

參考答案:

誰能幫我編一段排序算法的代碼?_如何安裝VisualStudio2019?_cout.flush()函數的參數是什么?

集成開發環境中一般包含

參考答案:

調試器_鏈接器_編譯器

關于C++的main()函數說法不正確的是

參考答案:

必須得顯式地寫return語句返回一個整型值

InstandardC,theindexofanarraymustbeaconstant,notanexpression()

參考答案:

錯誤

派生類能夠從基類繼承的函數包括

參考答案:

帶參構造函數_拷貝構造函數_默認構造函數

對于已有代碼:chara[3]={'a'},b[3]={'b'};constautop=a;合法的后續語句是

參考答案:

p=b+1;_*a=(++p)[1];

C++11支持的編程范式包括

參考答案:

OO編程范式_泛型編程范式_結構化編程范式_函數式編程范式

集成開發環境的英文縮寫是

參考答案:

IDE

集成開發環境中不一定包括

參考答案:

圖形界面設計工具

第一個被稱為“ModernC++”的標準是?

參考答案:

C++11

InstandardC,allthefunctionsexceptmain()shouldbedeclaredbeforebeingcalled.()

參考答案:

正確

當你創建自定義的異常類時,應該從C++標準庫中的exception類繼承,從而可以使用exception類中的which()函數。

參考答案:

錯誤

InCprogramminglanguage,theresultofstatement5^4is[]

參考答案:

1

Theoutputofthefollowingstatementsis[](ASCIIcodeof'a'is97)inta=98;charb=‘a’;printf("%c%d",(char)a,(int)b);

參考答案:

b97

類Hello的拷貝構造函數的原型可以寫成:Hello(Hello&h,intx=0);

參考答案:

正確

只要一個類里面沒有setter函數,它就是immutableclass

參考答案:

錯誤

對于代碼chars[]={'H','e','l','l','o'};autoi=0;for(charc:s){i++;}cout<<i;的輸出結果是6

參考答案:

錯誤

對于如下代碼Circle*circle=newCircle[3];delete[]circle;circle=nullptr;說法正確的是

參考答案:

circle指針所指向的地址是堆區的地址_調用了3次Circle的析構函數_在創建Circle數組時調用了3次Circle的默認構造函數

重載函數在聯編過程中,用于確定調用那個函數的特征包括

參考答案:

函數參數的類型_函數參數的次序_函數參數的個數

Theoutputofthestatements:inta=3,b=4;printf("%d",(a>=b?a:a

參考答案:

4

InstandardC,localvariablesmustbedefinedbeforeanyotherstatementsinthefunctionbody.()

參考答案:

正確

Thememoryaddressandthecontentsinthememoryareidentical.()

參考答案:

錯誤

InClanguage,whendeclaringastructtype,youmustnotomitthekeyword"struct".()

參考答案:

正確

關于流插入/流提取運算符在讀寫文件時說法正確的有

參考答案:

流插入/流提取運算符可以自動識別緊跟其后的參數的數據類型并進行自動轉換,其原因是將<<>>運算符進行了重載_在文件輸出操作中,流插入運算符可以與setw()等格式控制函數一同使用

只能放到構造函數初始化列表中賦值的類成員包括:

參考答案:

沒有默認構造函數的類類型成員_常量成員

調用容器的erase(beg,end)函數,會刪除容器中的:

參考答案:

從beg開始(包含beg)到end結束(但不包含end)的所有元素

對于下面代碼,空白處正確的是classS{public:autox{3};autoy{1.1};autoz{'a'};}intmain(){Ss;____________________;std::cout<<a<<"\t"<<b<<"\t"<<c;return0;}

參考答案:

auto[a,b,c]{s}

隨機訪問文件中所用到的函數的說法正確的是

參考答案:

tellg()用于獲得讀取文件流的位置指示器

以下代碼中包含錯誤。請指出所有有錯誤的代碼行數

參考答案:

4,7

foo類的后置++運算符(postfixoperator++)的原型聲明是哪一個?

參考答案:

foooperator++(intdummy);

InClanguage,thereare3basicfileaccessmodes:read,writeandappend.()

參考答案:

正確

Inifstatement,thestatementbeforeelsemayomit";".()

參考答案:

錯誤

InstandardC,"="isajudgmentofwhethertwonumbersareequal.()

參考答案:

錯誤

InstandardC,intvariablecanbeusedascharvariable,andviceversa.()

參考答案:

錯誤

Clanguageisastructuredprogramminglanguage.()

參考答案:

正確

Giventhefollowingprogram#includeintfun(){staticintx=1;x+=1;returnx;}intmain(){inti,s=1;for(i=1;i<=5;i++)s+=fun();printf("%d\n",s);return0}

參考答案:

21

下面哪條語句創建了一個存有10個整數的vector對象?

參考答案:

std::vectorv(10);

cin對象中,以下說法錯誤的是

參考答案:

也支持<<操作

根據最新的C++標準,以下代碼中,哪個使用auto的方法是正確的?

參考答案:

autox{'a'};autop{x};

boolx,y;//......此處代碼對x和y進行初始化則表達式!(x&&!y)與下面哪個表達式等價?

參考答案:

!x

||

y

chara,b;cin>>a;b=cin.get();從鍵盤上輸入字符x然后回車,那么b中存放的是

參考答案:

換行符

Whichstatementsatisfiesthecondition:Ifstrings1equalstostringss2,thenexecuteST.[]

參考答案:

if(strcmp(s2,s1)==0)ST;

Afterexecutingthefollowingstatements:inti=0;for(;++i<=4;){};thevalueofvariableiis[]

參考答案:

5

Theoutputofthefollowingprogramis[]inta=0,b=3;printf("%d%d",(a<<1),(b<<2));

參考答案:

0

12

Whichofthefollowingstatementsarecompletelycorrect?[]

參考答案:

intk,*p=&k;

scanf("%d",p);

以下類中有靜態成員,關于靜態成員說法正確的是classA{public:A(inta=0):x(a){}staticvoidf1(){____________;};private:intx;staticinty;};

參考答案:

第6行不能填x++

給出如下代碼classB{public:voidf(){}voidg(){f();}}classD:publicB{public:voidf(){}voidg(){B::f()}}intmain(){Bb,*pb=&b;Dd,*pd=&d;d.g();pd->B::g();return0;}第14行和第15行中調用了一些函數,那么對這些被調用的函數的說法正確的是

參考答案:

第14行直接調用了D::g()第15行間接調用了B::f()

關于類的友元函數說法正確的是

參考答案:

友元函數能訪問類的數據域成員的getter和setter函數

Circle為已經定義的類;對于如下代碼Circlecircle1;Circle*pCircle=&circle1;正確訪問對象成員函數的方法是

參考答案:

pCircle->getArea();

對于已有代碼chara[3]{'a','b','c'},b[3];autop=a;合法的后續語句是:

參考答案:

b[2]=(*p)++;

根據C++標準,C++程序的主函數中不寫return語句,也能夠通過編譯,是因為

參考答案:

編譯器會自動生成return0;語句

析構函數說法正確的是

參考答案:

析構函數在對象銷毀時被自動調用

下面代碼的輸出結果是_______#includeintmain(){inta[]{1,3,5};auto[x,y,z]{a};std::cout<<z;return0;}

參考答案:

5

對于如下代碼#includeclassHello{public:Hello*getThis(){returnthis;}}intmain(){Helloa,b;std::cout<<(a.getThis()==b.getThis());return0;}的輸出結果是

參考答案:

0

要使用二進制的方式打開一個文件進行輸入或者輸出操作,那么該文件打開時必須要包含的一個模式應該是:________注意答案中不要空格,也不要分號

參考答案:

binary

在模板前綴中,與關鍵字class等價的另外一個關鍵字是___________

參考答案:

typename

在模板前綴中,要定義一個類型參數,可以使用關鍵字______,也可以使用關鍵字class,但是前者的描述性更好。

參考答案:

typename

在C++中,可以使用________函數以相同的函數名不同的參數來完成不同的功能

參考答案:

overload##%_YZPRLFH_%##重載

在類模板中不能使用友元

參考答案:

錯誤

類模板中的成員函數在類外定義時,需要在函數前面加上模板前綴

參考答案:

正確

對于如下函數模板,正確的調用方式包括:templateSmaxValue(Ss1,Ss2,Tt){Ss3;//dosomethingreturns3;}

參考答案:

maxValue(3.0,3.1,-5);_maxValue("Hello","World","!");_maxValue('A','\n',"\n");

Giventhefollowingprogram,whendo-whileloopfinishes,thevalueofxis[]enum{APPLE,LEMON=6,ORANGE,BANANA=2,GRAPE};voidf(){intx=GRAPE;do{x++;}while((x-APPLE)<=ORANGE);}

參考答案:

8

在函數模板中,泛型T可以作為:

參考答案:

函數的局部變量的類型_函數的返回值類型_函數參數的類型

關于元編程和泛型編程說法正確的有

參考答案:

C++中,模板編程既可以指元編程,也可以指泛型編程_C++中的泛型編程是通過元編程實現的_元編程是編寫能夠生成、修改或者處理其它程序的程序

在函數中使用泛型的優點有

參考答案:

使程序易于維護_減少程序員所需編寫的代碼行數

類模板中,不能使用泛型的地方有:

參考答案:

構造函數的返回值類型

以下類模板成員函數定義正確的是:

參考答案:

templateauto

MyClass::foo(T

t){

std::cout

<<

t

<<

std::endl;}

對于以下代碼,編譯器會生成幾個函數模板的實例?templateintcomp(Ss,Tt){//dosomethingreturn0;}intmain(){comp(1,8);comp(1.0,8);comp("Hello","World");comp(1.0,8.0);comp(4.0,2);}

參考答案:

4

對于選擇排序算法的函數原型,可以寫作:

參考答案:

template

voidselectionSort(Slist[],intarraySize){

//dosomething}

重拋出異常的語句是________;

參考答案:

throw

使用new運算符分配內存出錯,系統拋出的異常類型是_____________

參考答案:

bad_alloc

TherelationshipbetweenchararrayandC-stylestringis[]

參考答案:

Ifastringisstoredinachararray,thesizeofthechararraymustbegreaterthanthelengthoftheC-stylestring.

catch后的異常類型必須與try塊中拋出的異常類型匹配,才能進入catch塊執行

參考答案:

正確

Thefollowingprogramcomputesthesummaryoftheintegersthatarelessthann.Thestatementsintheblankshouldbe[]intsum(unsignedintn){if(________){return1;}else{returnn+sum(n-1);}}

參考答案:

1==n

Thecorrectoneaboutpointersis:[]Weassumethatallcodesarecompiledon32-bitplatform

參考答案:

structT{doubled;}*p;

wherepoccupies4bytesmemory;

Thefollowingprogramsinitializeanarray.Thecorrectoneis:[]

參考答案:

inta3[4]={3,2,1};

IfcompiledwithaSTANDARDCCOMPILER(e.g.gcc),whichiscorrectaboutthefollowingfunction"add"?[]doubleadd(int*,int*,intk){return(double)(8+k);}intmain(){intx=1,y=2,z=3;add(&x,&y,z);return0;}

參考答案:

Compileerror.Afterfillinginthenameoftheformalparameters,theprogramcanbecompiledwithouterrors;

Thecorrectdescriptionaboutthefollowingprogramis[]#includeint*pPointer;intnNumber;voidf(){nNumber=25;pPointer=&nNumber;}intmain(){f();printf("Valueof*pPointer:%d",*pPointer);return0;}

參考答案:

noproblem

c++程序中的源文件擴展名包括以下:

參考答案:

cpp_cxx

override特殊標識符要放到函數的返回值類型前

參考答案:

錯誤

C++集成開發環境包括下面所列的哪些部分?

參考答案:

編譯器_鏈接器_編輯器

下述代碼的輸出結果是:#includeinti=1;intmain(){for(inti=0;i<4;i++){::i+=i;}std::cout<<::i;return0;}

參考答案:

7

c++標準庫中所有異常類的基類是

參考答案:

exception

在C++17標準下,如下代碼是沒有語法錯誤的:templateautofoo(Ss,Tt){//dosomethingreturns;}

參考答案:

正確

如下代碼中,類X的拷貝構造函數的數量是classX{public:X();X(int&);X(constX&,int=1);~X();};

參考答案:

2

下面的代碼中Circlecircle1,&circle2=circle1,*p=&circle2;兩個&符號的含義是相同的。

參考答案:

錯誤

map容器中的元素可以有重復的鍵值(key)

參考答案:

錯誤

noexcept可以用于區分重載函數

參考答案:

錯誤

對于如下代碼Circle*p=newCircle[3];正確釋放內存的代碼是:

參考答案:

delete[]p;

catch后的異常對象類型為派生類,則該catch塊可以捕獲基類類型的異常

參考答案:

錯誤

考慮到深拷貝和淺拷貝問題,當一個對象的數據域成員包含如下哪一項時,默認的賦值運算符operator=可能會無法正確工作?

參考答案:

指針類型數據成員

對于一個類Hello,在該類的內部聲明構造函數或者析構函數時,原型可以寫為

參考答案:

Hello(Hello&h,inta=0);

C++17中,構造路徑對象正確的代碼是

參考答案:

std::filesystem::pathr{"C:\\Windows"};r.append("System32");

派生類繼承基類構造函數時,可以使用using只繼承某個特定的基類構造函數

參考答案:

錯誤

對于代碼std::priority_queueq;q.push('a');q.push('b');q.push('d');std::cout<

參考答案:

d

下面代碼的輸出結果是:boolx=true;inty=0;cout<<boolalpha<<(x&&y);

參考答案:

false

如何學好C++?

參考答案:

多調試解決程序BUG_多編程

下面代碼中,第7行橫線處應該填入classMyExcept{};intmain(){try{MyExceptex;throwex;}catch(________){}return0;}

參考答案:

MyExcept&e

派生類中不能繼承基類中的

參考答案:

友元函數_析構函數

構造函數和析構函數都是自動調用的,無法像普通成員函數一樣通過對象顯式調用。

參考答案:

正確

調用文件流類中的get()函數讀文件內容,文件位置指示器會向文件尾部移動一個整數的位置

參考答案:

錯誤

根據C++最新標準,要想在main()函數中使用語句std::cout<<std::string("AlohaWorld!")<<"\n";cout<<"WelcometoC++!"s<<endl;//C++14字符串字面量,包含在特殊的名字空間中正確地在屏幕上輸出信息,需要在main()函數前面加上哪些語句?(不考慮編碼規范,僅僅保證編譯正確)

參考答案:

#include#includeusingstd::cout;usingstd::endl;usingnamespacestd::string_literals;

基類的構造函數能夠由派生類中的任何函數調用

參考答案:

錯誤

inti=1;cout<<i<<i++;上面的代碼的輸出是

參考答案:

第二行代碼是一句病式。最終結果依賴于兩個i的取值次序。這是C++標準中未定義的行為。不同編譯器會輸出不同的結果。

intp;p=NULL;在C++11中,這種代碼寫法是一種好的編程規范

參考答案:

錯誤

代碼#includeinti=1;intmain(){for(inti=0;i<5;i++){::i+=i;}std::cout<<::i;return0;}的輸出結果是:

參考答案:

11

C++實現運行時多態的必要條件是使用對象指針或者對象引用訪問同名函數

參考答案:

正確

在基類中定義虛函數時,函數名字前必須要加上的關鍵字是

參考答案:

virtual

對于如下代碼Circlecircle1;Circle*pCircle=&circle1;正確訪問對象成員函數的方法是

參考答案:

circle1.getArea();_(&circle1)->getArea();

在類聲明中直接定義的成員函數會默認成為內聯函數

參考答案:

正確

關于模板說法正確的是

參考答案:

一個函數模板用不同的類型實例化后構成了一組重載函數

關于C++11引入的std::array類,說法不正確的是

參考答案:

std::array對象不能用基于范圍的for循環遍歷

下面的語句在正確的包括

參考答案:

charc,&r=c;_int*a=newint(3);deletea;_chara[]="Aloha";char*p=static_cast(newchar[sizeof(a)]);

下列關于異常說法正確的有

參考答案:

在函數模板中,可

溫馨提示

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

評論

0/150

提交評論