2016年計算機二級《C++》單選試題與解析
- 計算機二級
- 關注:1.56W次
1下列有關內聯函數的敍述中,正確的是( )。
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。
- 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-hk/jsj/erji/6xr231.html