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。