當前位置:才華齋>計算機>計算機二級>

2016年計算機二級《C++》單選試題與解析

計算機二級 閱讀(1.74W)

1下列有關行內函數的敘述中,正確的是( )。

2016年計算機二級《C++》單選試題與解析

A.行內函數在呼叫時發生控制轉移

B.行內函數必須通過關鍵字inline來定義

C.行內函數是通過編譯器來實現的

D.行內函數函式體的最後一條語句必須是return語句

參考答案:C

參考解析:一般函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中;而行內函數在呼叫時,是將呼叫表示式用行內函數體來替換,所以在呼叫時不發生控制轉移。在類內部實現的函式都是行內函數,可以不用inline定義;只有函式外部定義的行內函數才必須加關鍵字inline。編譯系統並非對行內函數必須使用內聯,而且根據具體情況決定。行內函數不是必須要有返回值的。

2語句int*P=&k;定義了指標P,與這個語句等效的語句序列是( )。

* p;P=&k; * P;P=k; * p;* P=&k; * p;* P=k;

參考答案:A

參考解析:本題考查指標和地址,題目中定義了一個指向變數k的一個指標p,那麼與題目中等效的表示式A選項,即先定義一個指向整型的指標,然後指向k的地址。

3有如下程式:

#include

using namespace std;

class A

{

public:

A(){cout<<”A”;}

-A(){cout<<”-A”;}

};

class B:public A

{

A*P;

public:

B(){cout<<”B”;P=new A();}

-B(){cout<<”~B”;delete p;}

};

int main()

{

B obj;

return 0;

}

執行這個程式的輸出結果是( )。

~A~B~~B~A~~B~A~~A~B~A

參考答案:B

參考解析:本題考查派生類的建構函式和解構函式,在定義一個派生類的物件時,先呼叫基類的建構函式,然後再執行派生類的建構函式。物件釋放時,先執行派生類的解構函式,再執行基類的解構函式。所以本題答案為B。

4有如下類定義:

class AA

{

im a:

public:

int getRef()const{return&a;}//①

int getValue()const{return a;}//②

void set(int n)const{a=n;}//③

friend void show(AA t{cout<

};

其中四個函式的定義中正確的是(  )。

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

參考答案:B

參考解析:本題考查常成員函式,常成員函式只能引用本類中的資料成員,而不能修改它。所以本題答案為B。

5若要對Data類中過載的加法運算子成員函式進行宣告,下列選項中正確的是( )。

+(DatA.; operator+(DatA.;+operator(DatA.;ator+(Data,DatA.;

參考答案:B

參考解析:根據過載加法運算子的格式,只有B選項正確。

6有如下陣列宣告:int num[10];,下標值引用錯誤的是( )。

[10][5][3][o]

參考答案:A

參考解析:陣列定義中的數字指的是陣列的大小,而下標是從0開始的,所以本題中陣列的最後一個元素是num[9]。

7將字首運算子“--”過載為非成員函式,下列原型中能正確用於類中說明的是(  )。

&operator--(int); operator--(DeCr&,int);nd DeCr&operator--(DeCr&);nd DeCr operator--(DeCr&,int);

參考答案:C

參考解析:把“--”運算子過載為非成員(友元)函式格式:friend<返回型別>operator--()是字首的格式;friend<返回型別>operator--(int)是字尾的格式。當然也可以有引數如題中C選項所示。

8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。

iC和iC和eCted和eCted和proteCted

參考答案:D

參考解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。

9在函式中,可以用aut0、extem、register和static這四個關鍵字中的一個來說明變數的儲存型別,如果不說明儲存型別,則預設的儲存型別是(  )。

ic

參考答案:A

參考解析:變數的儲存方法分為靜態儲存和動態儲存兩大類,包含4種:自動的(auto)、靜態的(static)、暫存器的(register)、外部的(extem)。變數如果沒有說明儲存型別,那麼預設就是aut0。

10下列程式的輸出結果是( )。

#include

int rain(iltl a,int B)

{

if(a

else retum b;

retum 0;

}

void main()

{

eout<

}

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

參考答案:B

參考解析:本題考查的是函式的呼叫,第一次呼叫min(2,3),因為2<3,所以返回值為2,第二次呼叫min(1,2),因為l<2,所以返回1。