22春學(xué)期(高起本1709-1803、全層次1809-2103)《面向?qū)ο蟪绦蛟O(shè)計》在線作業(yè)-00001
試卷總分:100 得分:100
一、單選題 (共 35 道試題,共 70 分)
1.友元重載運算符obj1>obj2被C++編譯器解釋為()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
2.對于類定義 class A{ public: virtual void funcl(){} void func2(){} }; class B:public A{ public: void func1(){cout<<"class B func1"<<endl;} virtual void func2(){cout<<"class B func2"<<endl;} };下面正確的敘述是( )。
A.A::func2()和B::func1()都是虛函數(shù)
B.A::func2()和B::func1()都不是虛函數(shù)
C.B::func1()是虛函數(shù),A::func2()不是虛函數(shù)
D.B::func1()不是虛函數(shù),A::func2()是虛函數(shù)
3.read函數(shù)的功能是從輸入流中讀取( )。
A.一個字符
B.當(dāng)前字符
C.一行字符
D.指定若干個字符
4.運算符重載的目的是()。
A.提高程序的效率
B.提高代碼復(fù)用能力
C.簡化程序,減少目標(biāo)代碼
D.使程序代碼直觀易讀
5.下列對重載函數(shù)的描述中,( )是錯誤的。
A.重載函數(shù)中不允許使用默認(rèn)參數(shù)
B.重載函數(shù)中編譯時根據(jù)參數(shù)表進(jìn)行選擇
C.不要使用重載函數(shù)來描述毫無相干的函數(shù)
D.構(gòu)造函數(shù)重載將會給初始化帶來多種方式
6.關(guān)于下面程序段說法正確的是( ) class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1);
A.語句obj2(obj1);的功能是用對象obj1初始化具有相同類類型的對象obj2
B.語句obj2(obj1);的功能是用對象obj2初始化具有相同類類型的對象obj1
C.X(X&x)中的&符號可以刪除
D.X(X&x)函數(shù)中不能訪問對象的私有成員
7.設(shè)置虛基類的目的是()。
A.簡化程序
B.消除二義性
C.提高運行效率
D.減少目標(biāo)代碼
8.對于拷貝構(gòu)造函數(shù),正確的描述是()。
A.在C++語言中,如果不自定義類的拷貝構(gòu)造函數(shù),則每個類都有默認(rèn)的拷貝構(gòu)造函數(shù)
B.必須為每個類定義拷貝構(gòu)造函數(shù)
C.如果要使用拷貝構(gòu)造函數(shù),則必須在類中先定義
D.當(dāng)定義了類的構(gòu)造函數(shù)時,如果要使用拷貝構(gòu)造函數(shù),則必須定義拷貝構(gòu)造函數(shù)
9.下面關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述,錯誤的是()。
A.析構(gòu)函數(shù)中調(diào)用虛函數(shù)采用靜態(tài)聯(lián)編
B.對虛析構(gòu)函數(shù)的調(diào)用可以采用動態(tài)聯(lián)編
C.當(dāng)基類的析構(gòu)函數(shù)是虛函數(shù)時,其派生類的析構(gòu)函數(shù)也一定是虛函數(shù)
D.構(gòu)造函數(shù)可以聲明為虛函數(shù)
10.多繼承的構(gòu)造函數(shù)順序可分為如下4步: ①所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造。 ②所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造。 ③所有子對象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造。 ④派生類自己的構(gòu)造函數(shù)體 這四個步驟的正確順序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
11.關(guān)于this指針的說法錯誤的是( )。
A.this指針必須顯示說明
B.當(dāng)創(chuàng)建一個對象后,this指針就指向該對象
C.成員函數(shù)擁有this指針
D.靜態(tài)成員函數(shù)不擁有this指針
12.有關(guān)析構(gòu)函數(shù)的說法正確的是( )。
A.析構(gòu)函數(shù)可以有多個
B.析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參
C.析構(gòu)函數(shù)的功能是用來釋放一個對象
D.析構(gòu)函數(shù)的函數(shù)類型為void
13.一個( )允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)和返回值可以取任意數(shù)據(jù)類型。
A.函數(shù)模板
B.模板函數(shù)
C.類模板
D.模板類
14.下列關(guān)于成員訪問權(quán)限的描述中,不正確的是( )。
A.公有數(shù)據(jù)成員和公有成員函數(shù)都可以通過類對象直接訪問
B.類的私有數(shù)據(jù)成員只能被公有成員函數(shù)以及該類的任何友元類或友元函數(shù)訪問
C.保護(hù)成員在派生類中可以被訪問,而私有成員不可以
D.類或派生類的成員函數(shù)可以訪問保護(hù)成員
15.使用string類,必須在程序中包含頭文件()。
A.string.h
B.string
C.cstring.h
D.cstring
16.已知函數(shù)原型:void f(int a, int b=3,char c='*'); 則下面的函數(shù)調(diào)用中,不合法的調(diào)用是()。
A.f(5)
B.f(5,8)
C.f(6, , '#')
D.f(0,0, '#')
17.派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含()。
A.基類的構(gòu)造函數(shù)
B.派生類中子對象的初始化
C.基類的子對象初始化
D.派生類中一般數(shù)據(jù)成員的初始化
18.關(guān)于虛函數(shù),下列表述正確的是( )。
A.如果在重定義虛函數(shù)時使用virtual,則該重定義函數(shù)仍然是虛函數(shù)
B.虛函數(shù)不得聲明為靜態(tài)函數(shù)
C.虛函數(shù)不得聲明為另一個類的友元函數(shù)
D.派生類必須重新定義基類的虛函數(shù)
19.在保護(hù)繼承中,基類中的私有成員作為派生類的()。
A.公有成員
B.私有成員
C.保護(hù)成員
D.不可訪問
20.假定已定義浮點型變量data,以二進(jìn)制方式把data的值寫入輸出文件流對象outfile中去,正確的語句是( )。
A.outfile.write((float *) &data, sizeof(float));
B.outfile.write((float *) &data, data);
C.outfile.write((char *) &data, sizeof(float));
D.outfile.write((char *) &data, data);
21.下列引用的定義中,( )是錯誤的。
A.int i; int &j=i;
B.int i; int &j; j=i;
C.float i; float &j=i;
D.char d; char &k=d;
22.C++有( )種聯(lián)編方式。
A.1
B.2
C.3
D.4
23.在C++標(biāo)準(zhǔn)模板庫中,vector容器是一種( )。
A.標(biāo)準(zhǔn)類
B.標(biāo)準(zhǔn)對象
C.標(biāo)準(zhǔn)函數(shù)
D.標(biāo)準(zhǔn)類模板
24.下列關(guān)于賦值運算符重載的說法中正確的是()。
A.返回值一般是以引用方式返回的對象,而函數(shù)體中總是用語句“return *this;”返回this指針?biāo)赶虻膶ο?/p>
B.賦值運算符只能以非成員函數(shù)的方式重載
C.賦值運算符既可以以成員函數(shù)的方式重載,又可以以非成員函數(shù)的方式重載
D.以上均不正確
25.下列對派生類的描述中錯誤的是()。
A.派生類至少有一個基類
B.派生類可作為另一個派生類的基類
C.派生類除了包含它直接定義的成員外,還包含其基類的成員
D.派生類對其繼承的基類的成員訪問權(quán)限保持不變
26.下列對派生類的描述中,()是錯誤的。
A.一個派生類可以作另一個派生類的基類
B.派生類至少有一個基類
C.派生類的成員除了它自己的成員外,包含了它的基類的成員
D.派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變
27.面向?qū)ο蟪绦蛟O(shè)計思想的主要特征中不包括( )。
A.封裝性
B.多態(tài)性
C.繼承性
D.功能分解,逐步求精
28.有關(guān)構(gòu)造函數(shù)說法不正確的是( )。
A.構(gòu)造函數(shù)的名字和類的名字一樣
B.在創(chuàng)建對象時,系統(tǒng)自動調(diào)用構(gòu)造函數(shù)
C.構(gòu)造函數(shù)無任何函數(shù)類型
D.構(gòu)造函數(shù)有且只有一個
29.如果一個類至少有一個純虛函數(shù),那么就稱該類是()。
A.抽象類
B.虛基類
C.派生類
D.以上都不對
30.進(jìn)行文件操作時需要包含_ ()頭文件。
A.iostream
B.fstream
C.stdio
D.stdlib
31.已知AA是一個類,則執(zhí)行語句AA a;后( )。
A.自動調(diào)用無參構(gòu)造函數(shù)
B.自動調(diào)用有參構(gòu)造函數(shù)
C.自動調(diào)用拷貝構(gòu)造函數(shù)
D.產(chǎn)生一個對象a,但不調(diào)用任何函數(shù)
32.類模板的使用實際上是類模板實例化成一個具體的( )。
A.類
B.對象
C.函數(shù)
D.變量
33.下列描述中,()是抽象類的特性。
A.可以說明虛函數(shù)
B.可以定義友元函數(shù)
C.可以進(jìn)行構(gòu)造函數(shù)重載
D.不能說明其對象
34.C++對C語言做了很多改進(jìn),下列描述中( )使得C語言發(fā)生了質(zhì)變,即從面向過程變成面向?qū)ο蟆?/p>
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)
C.規(guī)定函數(shù)說明必須用原型
D.引進(jìn)類和對象的概念
35.有關(guān)帶默認(rèn)參數(shù)的函數(shù)的描述正確的是()。
A.只能在函數(shù)定義時設(shè)置默認(rèn)參數(shù)值
B.只能在函數(shù)聲明時設(shè)置默認(rèn)參數(shù)值
C.函數(shù)調(diào)用時,必須使用默認(rèn)的參數(shù)值,不能給出新的實參值
D.設(shè)置默認(rèn)參數(shù)時,應(yīng)該設(shè)置最右邊的若干個參數(shù)的默認(rèn)值
二、判斷題 (共 15 道試題,共 30 分)
36.默認(rèn)形參值應(yīng)在函數(shù)定義處指定。
37.類的靜態(tài)成員函數(shù)中不能訪問非靜態(tài)成員。
38.抽象類雖然也是一種數(shù)據(jù)類型,但它不能建立對象,只能作為基類被其他類繼承。
39.多繼承情況下,派生類的構(gòu)造函數(shù)中基類構(gòu)造函數(shù)的執(zhí)行順序取決于定義派生類時所指定的各基類的順序。
40.在刪除一個動態(tài)對象時,將自動調(diào)用該動態(tài)對象所屬類的析構(gòu)函數(shù)。
41.構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。
42.定義模板的關(guān)鍵字是template。
43.預(yù)定義的提取符和插入符是可以重載的。
44.派生類對基類繼承的成員函數(shù)進(jìn)行重定義后,則通過派生類對象和基類對象調(diào)用的都是重定義后的成員函數(shù)。
45.引用是某個變量的別名。對引用的操作,實質(zhì)上就是對被引用的變量的操作。
46.C++語言中模板分為函數(shù)模板和類模板兩種。
47.cin后面的符號是<<。
48.運算符重載是一種特殊的函數(shù)重載,其函數(shù)名為operator。
49.函數(shù)模板可以與普通函數(shù)重載。
50.多重繼承中的二義性問題是由于一個派生類從不同基類中繼承了同名成員變量或相同函數(shù)原型的成員函數(shù)。