C++擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而C++就適應的問題規模而論,大小由之。以下是小編整理的關於計算機二級考試C++試題,希望大家認真閱讀!
1[單選題] 已知函式FA呼叫函式FB,若要把這兩個函式定義在同一個檔案中,則( )。
必須定義在FB之前
必須定義在FA之前
C.若FA定義在FB之後,則FA的原型必須出現在FB的定義之前
D.若FB定義在FA之後,則FB的原型必須出現在FA的定義之前
參考答案:D
參考解析:如果使用使用者自己定義的函式,而該函式與呼叫它的函式(即主呼叫函式)在同一程式單元中,且位置在主呼叫函式之後,則必須在呼叫此函式之前對被凋用的函式作宣告。
2[單選題]單個使用者使用的資料檢視的描述稱為
A.外模式 B.概念模式 C.內模式 D.儲存模式
參考答案:A
3[單選題] 生成派生類物件時,派生類建構函式呼叫基類建構函式的條件是( )。
A.無需任何條件
B.基類中顯式定義了建構函式
C.派生類中顯式定義了建構函式
D.派生類建構函式明確呼叫了基類建構函式
參考答案:D
參考解析:派生類的建構函式必須通過呼叫基類的建構函式來初始化基類子物件。所以,在定義派生類的建構函式時除了對自己的資料成員進行初始化外,還必須負責呼叫基類建構函式使基類的資料成員得以初始化。
4[單選題] 下列敘述中正確的是( )。
A.在物件導向的.程式設計中,各個物件之間具有密切的關係
B.在物件導向的程式設計中,各個物件都是公用的
C.在物件導向的程式設計中,各個物件之間相對獨立,相互依賴性小
D.上述三種說法都不對
參考答案:C
參考解析:物件導向的程式設計是用物件模擬問題領域中的實體,各物件之間相對獨立,相互依賴性小,通過訊息來實現物件之間的相互聯絡。
5[簡答題] 有以下兩個程式,分析它們的執行結果有什麼不同。
程式1:
#include
class Point
{
int x,y;
public:
Point(){x=y=0;}
Point(int i,int j){x=i;y=j;}
Point operator+(Point);
void disp() ( cout<<”(”<
}
Point Point::operator+(Point P)
{
this->x+=P.x; this->y+=p.y;
return *this;
}
void main()
{
Point pl(2,3),p2(3,4),p3;
cout<<”p1:”;();
cout<<”p2:”;();
p3=pl+p2;
cout<<”執行p3=p1+p2後”<
cout<<”p1:”,();
cout<<”p2:”;();
cout<<”p3:”;();
}
程式2:
#include
class Point{
int x,Y;
public:
Point(){x=y=O;}
Point(int i,int j){x=i,y=j;}
Point operator+(Point);
void disp f){cout<< ”(”<
}
Point Point::operator+(Point P)
{
Point s;
s.x=x+p.x; s.y=y+p.y;
return s;
}
void main()
{
Point pl(2,3),p2(3,4),p3;
cout<<”p1:”;();
cout<<”p2:”;();
p3=pl+p2;
cout<<”執行p3=p1+p2後”<
cout<<”p1:”;();
cout<<”p2:”;();
cout<<”p3:”;();
}
參考解析:這兩個程式中的main函式完全相同,類Point中的運算子過載均採用成員函式方式實現,只是程式1的運算子過載函式使用this指標,而程式2的運算子過載函式使用區域性物件。
p3=p1+p2 等價於p3=ator+(p2)。對於程式1,this指標指向p1物件,執行this->x+=p.x;this->y十一 p.y;語句,修改p l物件的x和y成員值,執行return*this;語句,將pl物件賦給p3。所以p1和p3兩個物件的x、Y值相同,即p3=pl+p2等價於 p1=p1+p2,p3:p1,其執行結果如下:
p1:(2,3)
p2:(3,4)
執行p3=pl+p2後
P1:(5,7)
p2:(3,4)
P3:(5,7)
對於程式2,執行運算子過載函式,Point s;語句定義一個物件,s.x=x+p.x;s.y=y+p.y;語句用於修改s物件的x、Y值,ret%il~l s;語句返回該物件,賦給p3,而p1和p2物件不改變。其執行結果如下:
p1:(2,3)
p2:(3,4)
執行p3=pl+p2後
p1:(2,3)
p2:(3,4)
p3:(5,7)第