西交《面向對象程序設計》在線作業(yè)
試卷總分:100 得分:100
第1題,在下列的各類函數中,( )不是類的成員函數。
A、構造函數
B、析構函數
C、友元函數
D、拷貝構造函數
正確答案:
第2題,在創(chuàng)建派生類對象時,構造函數的執(zhí)行順序是( )。
A、對象成員構造函數、基類構造函數、派生類本身的構造函數;
B、派生類本身的構造函數、基類構造函數、對象成員構造函數;
C、基類構造函數、派生類本身的構造函數、對象成員構造函數;
D、基類構造函數、對象成員構造函數、派生類本身的構造函數。
正確答案:
第3題,友元的作用之一是( )。
A、提高程序的運行效率。
B、加強類的封裝性。
C、實現數據的隱蔽性。
D、增加成員函數的種類。
正確答案:
第4題,由C++目標文件連接而成的可執(zhí)行文件的缺省擴展名為( )。
A、cpp
B、exe
C、obj
D、lik
正確答案:
第5題,用new運算符創(chuàng)建一個含有10個元素的一維整型數組的正確語句是( )。
A、int p=new int(10);
B、int p=new int[10];
C、int *p=new int[10];
D、int *p=new int(10);
正確答案:
第6題,以下關于函數模板的論述中,正確的是( )。
A、一旦定義了函數模板,就不能再定義同名的重載函數;
B、從同一個函數模板實例化后得到的多個模板函數屬于函數重載;
C、函數模板中只有一種參數;
D、在定義函數模板時,template語句與函數模板定義語句之間可以有別的語句。
正確答案:
第7題,已知:p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給A1的m賦值為5,( )是正確的。
A、A1.p=5;
B、A1-p=5;
C、A1.*p=5;
D、*A1.p=5;
正確答案:
第8題,一個類的構造函數為 “B(int ax, int bx): a(ax), b(bx) {}”,執(zhí)行 “B x(1,2),y(3,4);x=y;”語句序列后x.a的值為( )。
A、1
B、2
C、3
D、4
正確答案:
第9題,下述靜態(tài)數據成員的特性中,( )是錯誤的。
A、聲明靜態(tài)數據成員時前面要加修飾符static。
B、靜態(tài)數據成員要在類體外進行初始化。
C、在程序中引用靜態(tài)數據成員時,要在靜態(tài)數據成員名前加和作用域運算符。
D、靜態(tài)數據成員是本類中個別對象所共享的。
正確答案:
第10題,下述靜態(tài)數據成員的特性中,( )是錯誤的。
A、聲明靜態(tài)數據成員時前面要加修飾符static。
B、靜態(tài)數據成員要在類體外進行初始化。
C、在程序中引用靜態(tài)數據成員時,要在靜態(tài)數據成員名前加和作用域運算符。
D、靜態(tài)數據成員是一個類的個別對象所共享的。
正確答案:
第11題,下面是重載雙目運算符+的普通函數原形,其中最符合+原來含義的是( )。
A、Value operator+(Value,Value);
B、Value operator+(Value,int);
C、Value &operator+(Value,Value*);
D、Value &operator+(Value&,Value&);
正確答案:
第12題,下面是五條順序出現的聲明語句,非法的初始化語句是( )。
A、int i=C1;
B、const int ic=i;
C、const int *pc=
D、int *const cpi=
E、const int *const cpic=
正確答案:
第13題,下面是四條順序出現的聲明語句,非法的初始化語句是( )。
A、int i=C1;
B、const int ic=i;
C、const int *pc=
D、int *const cpi=
正確答案:
第14題,下面關于引用的說法錯誤的是( )。
A、引用是被引用對象的別名
B、對引用的修改就是對被引用對象的修改,反之亦然
C、引用不一定立即初始化
D、引用不能建立數組
正確答案:
第15題,下面對友元的錯誤描述是( )。
A、友元函數不可訪問對象的private成員
B、一個類的成員函數可以是另一個類的友元
C、友元類和友元函數均用關鍵字friend聲明
D、友元函數可以訪問對象的protected成員
正確答案:
第16題,下面對模板的聲明,正確的是( )。
A、template
B、template
C、template
D、template
正確答案:
第17題,下列說法錯誤的是( )。
A、在類中,成員的默認訪問特性是私有的;
B、類封裝了數據和操作;
C、類實質上是一種數據類型;
D、在類的定義中,必須包含private、public
E、protected三種存取方式對應得部分。
正確答案:
第18題,下列說法錯誤的是( )。
A、在類中不能對所定義的數據成員進行初始化;
B、類的公有成員函數是類與外界的接口;
C、同一個類的兩個對象占用相同的內存空間;
D、類實現數據隱藏。
正確答案:
第19題,下列說法不正確的是( )。
A、在類中,成員的默認訪問特性是私有的。
B、類封裝了數據和操作。
C、類實質上是一種數據類型。
D、在類的定義中,必須包含private、public
E、protected三種存取方式對應得部分。
正確答案:
第20題,下列說法不正確的是( )。
A、在類中不能對所定義的數據成員進行初始化。
B、類的公有成員函數是類與外界的接口。
C、同一個類的兩個對象占用相同的內存空間。
D、類實現數據隱藏。
正確答案:
第21題,下列函數中,( )不能重載。
A、一般的成員函數;
B、一般的非成員函數;
C、析構函數;
D、構造函數。
正確答案:
第22題,下列關于運算符重載的描述中,( )是正確的。
A、運算符重載可以改變運算數的個數;
B、運算符重載可以改變優(yōu)先級;
C、運算符重載可以改變結合性;
D、運算符重載不可以改變語法結構。
正確答案:
第23題,下列關于虛基類的說法錯誤的是( )。
A、有引入虛基類的目的是解決二義性的問題;
B、因為虛基類可被多個派生類繼承,因此可以有多個副本以適應不同的派生類;
C、若某個類被說明為虛基類,則被重復繼承的該類成員在派生類對象中只有一個副本;
D、在派生類對象創(chuàng)建時,要保證虛基類的構造函數只被調用一次。
正確答案:
第24題,下列關于私有繼承的說法中正確的是( )。
A、基類成員對派生類新定義的成員函數是不可見的;
B、基類成員對派生類新定義的成員函數是可見的;
C、只有基類成員中的公有成員對派生類新定義的成員函數是可見的;
D、基類成員中的保護成員對派生類新定義的成員函數是可見的。
正確答案:
第25題,下列關于類的訪問控制機制說法錯誤的是( )。
A、靜態(tài)數據成員通常都定義為公有類型。
B、一個對象的私有成員對于同類的另一個對象是可見的。
C、友元機制破壞了類的封裝性。
D、基類的保護成員對派生類新定義的成員函數是可見的。
正確答案:
第26題,下列對引用的陳述中錯誤的是( )。
A、每一個引用都是其所引用對象的別名,因此必須初始化;
B、形式上針對引用的操作實際上作用于它所引用的對象;
C、一旦定義了引用,一切針對其所引用對象的操作只能通過該引用間接進行;
D、不需要單獨為引用分配存儲空間。
正確答案:
第27題,下列對派生類的描述中,( )是錯的。
A、一個派生類可以作為另一個派生類的基類;
B、派生類至少有一個基類;
C、派生類的成員除了它自己的成員外,還包含了它的基類的成員;
D、派生類中繼承的基類成員的訪問權限到派生類保持不變;
正確答案:
第28題,下列對繼承關系的描述中,正確的是( )。
A、在公有繼承中,基類中的公有成員和私有成員在派生類中都是可見的;
B、在公有繼承中,基類中只有公有成員對派生類的對象是可見的;
C、在私有繼承中,基類中只有公有成員對派生類是可見的;
D、在私有繼承中,基類中的保護成員對派生類的對象是可見的;
正確答案:
第29題,下列對繼承關系的描述中,( )是正確的。
A、在公有繼承中,基類中的公有成員和私有成員在派生類中都是可見的;
B、在公有繼承中,基類中只有公有成員對派生類的對象是可見的;
C、在私有繼承中,基類中只有公有成員對派生類是可見的;
D、在私有繼承中,基類中的保護成員對派生類的對象是可見的;
正確答案:
第30題,下列程序段不會發(fā)生二義性的是( )。
A、int fun(double p){...;}
B、int fun(float p){...;}
float fun(float p){...;}float fun(unsigned p){...;}
int x;int x;
x=fun(0);x=fun(0);
C、int fun(int i,int j=2){...;}
D、int fun(int i=2,int j=2){...;}
float fun(int i){...;}int fun(int *p){...;}
cout
正確答案:
第31題,下列程序段不會發(fā)生二義性的是( )。
A、int fun(double p){...;}
B、int fun(float p){...;}
float fun(float p){...;}float fun(unsigned p){...;}
int x;int x;
x=fun(0);x=fun(0);
C、int fun(int i,int j=2){...;}
D、int fun(int i=2,int j=2){...;}
float fun(int i){...;}int fun(int *p){...;}
cout
正確答案:
第32題,下列不是C++基本數據類型的是( )。
A、int
B、string
C、char
D、void
正確答案:
第33題,設置虛基類的目的是( )。
A、簡化程序;
B、消除二義性;
C、提高運行效率;
D、減少目標代碼;
正確答案:
第34題,若有語句 int *p = new int[5]; int * pi; 則以下語句中,執(zhí)行時會造成delete[ ] p 語句的執(zhí)行出錯的是( )。
A、(*p)++;
B、p++;
C、pi=p;
D、pi=p+3;
正確答案:
第35題,若有如下函數模板定義,則正確使用該函數模板的語句是( )。
template
void add(type a, type b, type &c)
{ c=a+b?; }
A、float x,y,z;add(x,y,z)?;
B、int x,y,z;add(x,y,&z)?;
C、float x,y?;int z;add(x,y,z)?;
D、float x,y?;int z;add(x,y,&z)?;
正確答案:
第36題,派生類的構造函數的成員初始化列表中,不能包含( )。
A、基類的構造函數;
B、派生類中子對象的初始化;
C、基類的子對象初始化;
D、派生類中一般數據成員的初始化;
正確答案:
第37題,類模板的作用是可以將其實例化后得到一個具體的( )。
A、類
B、對象
C、模板類
D、模板函數
正確答案:
第38題,基類A中有成員函數fn1()、fn2(),在派生類B中重載了成員函數fn1()(即重新定義了fn1()),但沒有重載其成員函數fn2()。如果在派生類B中調用基類A的成員函數fn1()(不是B中重載的數fn1())和fn2(),則正確的方式是( )。
A、A::fn1()和fn2();
B、fn1()和A::fn2();
C、A::fn1()和A::fn2();
D、fn1()和fn2();
正確答案:
第39題,函數重載與函數模板的說法錯誤的是( )。
A、當函數的函數體不同時,可以把函數設計為重載函數;
B、當函數體相同,僅僅操作的數據類型不同時,可把函數設計為模板;
C、重載函數和函數模板都是抽象的,都需實例化;
D、函數模板有待于實例化為模板函數,重載函數可以直接引用。
正確答案:
第40題,關于運行時多態(tài)的下列描述中,( )是錯誤的。
A、運行時多態(tài)是以虛函數為基礎的;
B、運行時多態(tài)是在運行時確定所調用的函數代碼的;
C、用基類指針或引用所標識的派生類對象來操作虛函數才能實現運行時多態(tài);
D、運行時多態(tài)是在編譯時確定操作函數的。
正確答案:
第41題,關于以下程序段中語法錯誤的正確描述是( )。
#include
voidmain()
{
constchar*p1=”string1”;
char*constp2=”string”;
char*p3=”string3”;
p1[2]=’a’;//①
p2[2]=’b’;//②
p1=p3;//③
p2=p3;//④
}
A、①②③④均錯誤
B、①和④錯誤
C、②和③錯誤
D、③和④錯誤
正確答案:
第42題,關于靜態(tài)成員,正確的說法是( )。
A、靜態(tài)成員函數可以直接訪問該類中的非靜態(tài)成員
B、非靜態(tài)成員函數不能直接訪問該類中的靜態(tài)成員
C、靜態(tài)數據成員同其它數據成員一樣通過構造函數進行初始化
D、靜態(tài)成員在任何對象創(chuàng)建之前就已經創(chuàng)建
正確答案:
第43題,關于繼承中出現的二義性的描述中,( )是錯誤的。
A、一個派生類的兩個基類中都有某個同名成員,在派生類中對這個成員的訪問可能出現二義性;
B、解決二義性的最常用的方法是對成員名的限定法;
C、在單繼承情況下,派生類中對基類成員的訪問也會出現二義性;
D、一個派生類是從兩個基類派生出來的,而這兩個基類又有一個共同的基類,對該基類成員進
正確答案:
第44題,關于基類和派生類的關系,( )是錯誤的。
A、派生類對象屬于基類;
B、可以用派生類指針指向派生類對象;
C、可以將基類對象賦值給派生類對象;
D、派生類對象指針可轉換為基類指針。
正確答案:
第45題,關于C++中的繼承機制,錯誤的說法是( )。
A、虛擬繼承限定基類只能通過一條路徑派生出派生類;
B、解決多繼承帶來的二義性的方法之一是對成員名加以限定;
C、派生類的構造函數的成員初始化列表中,可包含基類中的子對象;
D、繼承是一種組織類的基本手段。
正確答案:
第46題,對于下面的兩條語句,正確的描述是( )。MyObject a(2), b(a), c; c = b = a;
A、拷貝構造函數執(zhí)行了1次;
B、賦值運算符重載函數執(zhí)行了3次;
C、拷貝構造函數函數執(zhí)行了3次;
D、賦值運算符重載函數執(zhí)行了1次;
正確答案:
第47題,對于如下類的定義,下面語句組中出現語法錯誤的是( )。
class X{int a;
public:X(int x=0) {a=x;}
};
class Y:class X{int b;
public:Y(int x=0,int y=0):X(x) {b=x;}
};
A、X *pa=new Y(1,2);
B、Xa1=Y(1,3);
C、Yb1(2,3);X&a3=b1;
D、Xa4(10);Yb2=a4;
正確答案:
第48題,對于類模板,其類型形參可以作為( )。
A、成員函數的形參類型
B、成員函數的返回類型
C、數據成員的類型
D、以上三種均可
正確答案:
第49題,帶有虛基類的多層派生類構造函數的成員初始化列表中都要列出虛基類的構造函數,這樣將對虛基類的子對象初始化( )。
A、與虛基類下面的派生類個數有關
B、多次
C、二次
D、一次
正確答案:
第50題,不可以成為類的數據成員的是( )。
A、自身類的對象
B、另一個類的對象
C、自身類的指針或引用
D、其他基本數據類型
正確答案:

