c++選擇題題集
C++選擇題集
1.下列的各類函數(shù)中,不是類的成員函數(shù)。( C )
A)構造函數(shù) B)析構函數(shù) C)友元函數(shù) D)拷貝初始化構造函數(shù)
2.作用域運算符“::”的功能是:( B )
A)標識作用域的級別的 B)指出作用域的范圍的
C)給定作用域的大小的 D)標識成員是屬于哪個類的
3.下列說明中const char *ptr;其中ptr應該是:( C )
A)指向字符常量的指針 B)指向字符的常量指針
C)指向字符串常量的指針 D)指向字符串的常量指針
4.已知:print()函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,是正確的。( A )
A)void print()const; B)const void print();
C)void const print(): D)void print(const);
5.在類定義的外部,可以被訪問的成員有( C )
A)所有類成員 B)private的類成員
C)public的類成員 D)public或private的類成員
6.要求打開文件"d:\file.dat",可寫入數(shù)據(jù),正確的語句是:( B )
ifstream infile("d:\file.dat", ios::in);
ifstream infile("d:\\file.dat", ios::in);
ofstream infile("d:\file.dat", ios::out);
fstream infile("d:\\file.dat", ios::in|ios::out);
7.關于類和對象不正確的說法是:( C )
A)類是一種類型,它封裝了數(shù)據(jù)和操作 B)對象是類的實例
C)一個類的對象只有一個 D)一個對象必屬于某個類
8.在C++中,類與類之間的繼承關系具有( C )
A)自反性 B)對稱性 C)傳遞性 D)反對稱性
9.結構化程序設計所規(guī)定的三種基本控制結構是:( C )
A)輸入、處理、輸出 B)樹形、網(wǎng)形、環(huán)形
C)順序、選擇、循環(huán) D)主程序、子程序、函數(shù)
10.C++語言是從早期的C語言逐漸發(fā)展演變而來的.與C語言相比,它在求解問題方法上進行的最大改進是:( B )
A)面向過程 B)面向?qū)ο? C)安全性 D)復用性
11.在C++中實現(xiàn)封裝是借助于( B )
A)枚舉 B) 類 C) 數(shù)組 D)函數(shù)
12.C++語言是從早期的C語言逐漸發(fā)展演變而來的與C語言相比,它在求解問題方法上進行的最大改進是:( B )
A)面向過程 B)面向?qū)ο? C)安全性 D)復用性
13.在C++中用( D )能夠?qū)崿F(xiàn)將參數(shù)值帶回。
a)數(shù)組 b)指針 c)引用 d)上述ABC都可
14.考慮函數(shù)原型void test(int a,int b=7,char ch="*"),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是:( C )
A)test(5) B)test(5,8) C)test(6,"#") D)test(0,0,"*");
15.下列關于類和對象的敘述中,錯誤的是:( A )
A)一個類只能有一個對象; B)對象是類的具體實例;
C)類是對某一類對象的抽象; D)類和對象的關系是一種數(shù)據(jù)類型與變量的關系。
16.已知: int m=10;下列表示引用的方法中,正確的是:( C )
A)int &Z; B)int &t=10; C)int &X=m; D)float &f=&m;
17.對于int *pa[5];的描述中,正確的是:( D )
A)pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B)pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C)pa[5]表示數(shù)組的第5個元素的值,是int型的值
D)pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
18.定義析構函數(shù)時,應該注意:( C )
A)其名與類名完全相同 B)返回類型是void類型
C)無形參,也不可重載 D)函數(shù)體中必須有delete語句
19.在公有繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權限( B )
A)受限制 B)保持不變 C)受保護 D)不受保護
20.下列不是函數(shù)重載所要求的條件是:( D )
A)函數(shù)名相同 B)參數(shù)個數(shù)不同
C)參數(shù)類型不同 D)函數(shù)返回值類型不同
21.在C++中執(zhí)行以下4條語句后輸出rad值為:( C )
static int hot=200;
int &rad=hot;
hot=hot+100;
cout<<rad<<endl;
A) 0 B) 100 C) 300 D) 200
22.類clase CC1的說明如下,錯誤的語句是:( A )
clase CC1{
int a=2; //(A)
CC1(); //(B)
public:
CC1(int val); //(C)
~CC1(); //(D)
};
23.下列各類函數(shù)中,不是類的成員函數(shù)是:( C )
A)構造函數(shù) B)析構函數(shù)
C)友元函數(shù) D)拷貝構造函數(shù)
24.類的指針成員的初始化是通過函數(shù)完成的,這個函數(shù)通常是:( C )
A)析構函數(shù) B) 構造函數(shù) C)其它成員函數(shù) D)友元函數(shù)
25.關于構造函數(shù)的說法,不正確的是:( A )
A)沒有定義構造函數(shù)時,系統(tǒng)將不會調(diào)用它 B)其名與類名完全相同
C)它在對象被創(chuàng)建時由系統(tǒng)自動調(diào)用 D)沒有返回值
26.按解釋中的要求在下列程序劃線處填入的正確語句是:( C )
#include <iostream.h>
class Base{
public:
void fun(){cout<<"Base::fun"<<endl;}
};
class Derived:public Base{
public:
void fun()
{ //在此空格處調(diào)用基類的函數(shù)fun()
cout<<"Derived::fun"<<endl;}
};
A)fun(); B)Base.fun(); C)Base::fun(); D)Base->fun();
27.在C++中編譯器所生成的文件的擴展名為( B )
A) .cpp B) .obj C) .lib D) .exe
28.在保護繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權限( C )
A)受限制 B)保持不變 C)受保護 D)不受保護
29.有如下一段程序:
int f1(float);
int f2(char);
int f3(float);
int f4(float);
int(*pf)(float);
則以下不合法的是:( C )
A)int(*p)(float)=&f1; B)pf=&f4; C)pf=&f2; D)pf=&f3;
30.通??截悩嬙旌瘮?shù)的參數(shù)是:( C )
A)對象名 B)對象的成員名 C)對象的引用名 D)對象的指針名
31.系統(tǒng)在調(diào)用重載函數(shù)時,不能作為確定哪個重載函數(shù)被調(diào)用的依據(jù)是:( D )
A)參數(shù)個數(shù) B)參數(shù)類型 C)函數(shù)名稱 D)函數(shù)的返回值類型
32.下列描述中,正確的是:( D )
A)所有的運算符號都可以重載。
B)基類類型的指針可以指向子類,子類類型的指針也可以指向基類。
C)可以在類的構造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。
D)動態(tài)聯(lián)編要滿足兩個條件:被調(diào)用的成員函數(shù)是虛函數(shù);用指針或引用調(diào)用虛函數(shù)。
33.關于成員函數(shù)特征的描述中,錯誤的是:( A )
A)成員函數(shù)一定是內(nèi)聯(lián)函數(shù) B)成員函數(shù)可以重載
C)成員函數(shù)可以設置參數(shù)的默認值 D)成員函數(shù)可以是靜態(tài)的
34.下列關于構造函數(shù)的描述中,錯誤的是:( D )
A)構造函數(shù)可以設置默認參數(shù); B)構造函數(shù)在定義類對象時自動執(zhí)行
C)構造函數(shù)可以是內(nèi)聯(lián)函數(shù); D)構造函數(shù)不可以重載
35.下面描述中,表達錯誤的是:( B )
A)公有繼承時,基類中的public成員在派生類中仍是public的
B)公有繼承時,基類中的private成員在派生類中仍是private的
C)公有繼承時,基類中的protected成員在派生類中仍是protected的
D)私有繼承時,基類中的public成員在派生類中是private的
36.C++語言是從早期的C語言逐漸發(fā)展演變而來的,與C語言相比,C++在求解問題方法上進行的最大改進是:( B )
A)面向過程 B)面向?qū)ο? C)安全性 D)復用性
37.有如下類聲明“class A{int x; ……};”,則A類的成員x是:( B )
A)公有數(shù)據(jù)成員 B)私有數(shù)據(jù)成員 C)公有成員函數(shù) D)私有成員函數(shù)
38.有如下程序:執(zhí)行后的輸出結果應該是:( A )
#include<iostream.h>
class cla{
static int n;
public:
cla(){n++;}
~cla(){n--;}
static int get_n(){return n;}
};
int cla::n=0;
int main()
{
cla * p=new cla;
delete p;
cout<<"n="<<cla::get_n()<<endl;
return 0;
}
A)n=0 B)n=1 C)n=3 D)n=4
39.有如下程序:執(zhí)行后的輸出結果應該是:( A )
#include <iostream.h>
class A{
public:
A(){cout<<"A";}
};
class C:public A{
public:
C(){cout<<"C";}
};
void main(){C cobj;}
A) AC B) CA C) A D) C
40.有如下程序:執(zhí)行后的輸出結果應該是:( D )
#include <iostream.h>
class BASE{
public:
~BASE(){cout<<"BASE";}
};
class DERIVED: public BASE{
public:
~DERIVED(){cout<<"DERIVED";}
};
void main(){DERIVED x;}
A)BASE B)DERIVED C)BASEDERIVED D)DERIVEDBASE
41.類TM和類TN是兩個獨立的類,那么類TM中哪種形式的數(shù)據(jù)成員一定是不允許的:( C )
A)TM * a B)TN & a C)TM a D)TN a;
42.通過下述哪一項調(diào)用虛函數(shù)時,采用動態(tài)聯(lián)編。( A )
A)對象指針 B)對象名 C)成員名限定 D)派生類名
43.在下述哪種情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。( C )
A)函數(shù)體含有循環(huán)語句 B)函數(shù)體含有遞歸語句
C)函數(shù)代碼少、頻繁調(diào)用 D)函數(shù)體含有switch語句
44.創(chuàng)建動態(tài)對象,需要使用操作符( A )
A) new B) delete C) . D) *
45.刪除動態(tài)對象,需要使用操作符( B )
A) new B) delete C) . D) *
46.在C++中不能被重載的一組運算符是:( A )
A):: ?: . sizeof B)?: . sizeof ++ ->
C):: ?: new delete D)++ -- ?: sizeof
47.如果類A被說明成類B的友元,則( C )
A)類A的成員即是類B的成員
B)類B的成員即是類A的成員
C)類A的成員函數(shù)可以訪問類B的所有成員
D)類B的成員函數(shù)可以訪問類A的所有成員
48.下面關于友元的描述中,錯誤的是:( D )
A)友元函數(shù)可以直接訪問該類的私有成員。
B)一個類的友元類中的所有成員函數(shù)都是這個類的友元函數(shù)。
C)利用友元可以提高程序的運行效率,但卻破壞了封裝性。
D)友元關系不能被繼承,是雙向可交換的。
49.下列虛基類的聲明中,正確的是:( B )
A)class virtual B: public A B)class B: virtual public A
C)class B: public A virtual D)virtual class B: public A
50.C++設置虛基類的目的是( A )
A)消除二義性 B)簡化程序 C)提高運行效率 D)減少目標代碼
51.有如下模板定義:
template <class T>T fun(T x,T y){return x*x+y*y;}
在下列對fun的調(diào)用中,錯誤的是:( C )
A)fun(2,8) B)fun(2.0,8.2) C)fun(2.3,8) D)fun<float>(2,8.3)
52.通常情況下,函數(shù)模板中的類型參數(shù)個數(shù)不能是( A )
A)0個 B)1個 C)2個 D)3個
53.以下關于this指針的敘述中正確的是:( D )
A)任何與類相關的函數(shù)都有this指針; B)類的成員函數(shù)都有this指針;
C)類的友員函數(shù)都有this指針; D)類的非靜態(tài)成員函數(shù)才有this指針;
54.當一個類的某個函數(shù)被說明為virtual時,在該類的所有派生類中的同原型函數(shù)( A )
A)都是虛函數(shù) B)只有被重新說明時才是虛函數(shù)
C)都不是虛函數(shù) D)只有被重新說明為virtual時才是虛函數(shù)
55.在派生類中重新定義虛函數(shù)時,必須在下列哪方面與基類保持一致。( A )
A)參數(shù)類型 B)參數(shù)名字 C)操作內(nèi)容 D)賦值
56.關于const關鍵字說法錯誤的是( D )
A)const關鍵字可以修飾對象和成員函數(shù) B)const對象不能被修改
C)const成員函數(shù)不能修改類數(shù)據(jù)成員 D)const可以用于說明類
57.執(zhí)行如下程序后的輸出結果是:( B )
#include<iostream.h>
class test{
static int count;
public:
test(){count++;}
~test(){count--;}
static int getCount(){return count;}
};
int test::count=0;
int main()
{
test * p=new test;
test * q=new test;
delete p;
cout<<"count="<<test::getCount()<<endl;
return 0;
}
A)count=0 B)count=1 C)count=2 D)count=3
58.關于類模板的說法正確的是:( B )
A)類模板的主要作用是生成抽象類
B)類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類
C)在類模板中的數(shù)據(jù)成員具有同樣類型
D)類模板中的成員函數(shù)沒有返回值
59.有如下說明語句int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=a;則數(shù)值為9的表達式是:( B )。
A)*p+9 B)*(p+8) C)*p+=9 D)p+7
60.以下關鍵字不能用來聲明類的訪問權限的是:( C )
A)public B)private C)static D)protected
61.實現(xiàn)運行時的多態(tài)性采用( D )
A)重載函數(shù) B)構造函數(shù) C)析構函數(shù) D)虛函數(shù)
62.下列說明語句中正確的是:( D )
A)int a,&ra=a,&&ref=ra; B)int &refa[10];
C)int a,&ra=a,&*refp=&ra; D)int *pi, *&pref=pi;
63.進行文件操作時需要包含頭文件( C )
A)iostream.h B)stdio.h C)fstream.h D)stdlib.h
64.使用如setw()的格式操縱符時需要包含頭文件( C )
A)iostream.h B)fstream.h C)iomanip.h D)stdlib.h
65.對C++語言和C語言的兼容性,描述正確的是:( A )
A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++
66.在C++中使用流進行輸入輸出,其中用于屏幕輸出的對象是:( C )
A)cerr B)cin C)cout D)cfile
67.對使用關鍵字new所開辟的動態(tài)存儲空間,釋放時必須使用( C )
A)free B)create C)delete D)realse
68.如沒有使用private關鍵字定義類的數(shù)據(jù)成員,則默認為( A )
A)private B)public C)protected D)friend
69.使用值傳遞方式將實參傳給形參,下列說法正確的是:( A )
A)形參是實參的備份 B)實參是形參的備份
C)形參和實參是同一對象 D)形參和實參無聯(lián)系
70.在函數(shù)調(diào)用時,如某一默認參數(shù)要指明一個特定值,則有( A )
A)其之前所有參數(shù)都必須賦值 B)其之后所有參數(shù)都必須賦值
C)其前、后所有參數(shù)都必須賦值 D)其前、后所有參數(shù)都不必賦值
71.設存在函數(shù)int max(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達式不正確的是:( C )
A)int m = max(22,max(59,70)); B)int m = max(max(22,59),70);
C)int m = max(22,59,70); D)int m = max(59,max(22,70));
72.下列哪個類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)( A )
A)函數(shù)體語句較多 B)函數(shù)體語句較少 C)函數(shù)執(zhí)行時間較短 D)函數(shù)執(zhí)行時間過長
73.int Func(int,int);不可與下列哪個函數(shù)構成重載( B )
A)int Func(int,int,int); B)double Func(int,int);
C)double Func(double,double); D)double Func(int,double);
74.類的私有成員可在何處訪問( D )
A)通過子類的對象訪問 B)本類及子類的成員函數(shù)中
C)通過該類對象訪問 D)本類的成員函數(shù)中
75.如果沒有為一個類定義任何構造函數(shù)的情況下,下列描述正確的是:( A )
A)編譯器總是自動創(chuàng)建一個不帶參數(shù)的構造函數(shù) B)這個類沒有構造函數(shù)
C)這個類不需要構造函數(shù) D)該類不能通過編譯
76.一個類可包含析構函數(shù)的個數(shù)是:( B )
A)0個 B)1個 C)0個或1個 D)0個或多個
77.一個類可包含構造函數(shù)的個數(shù)是:( D )
A)0個 B)0個或1個 C)0個或多個 D)1個或多個
78.this指針存在的目的是:( B )
A)保證基類公有成員在子類中可以被訪問
B)保證每個對象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼
C)保證基類保護成員在子類中可以被訪問
D)保證基類私有成員在子類中可以被訪問
79.下列關于類的權限的描述錯誤的是:( A )
A)類本身的成員函數(shù)只能訪問自身的私有成員
B)類的對象只能訪問該類的公有成員
C)普通函數(shù)不能直接訪問類的公有成員,必須通過對象訪問
D)一個類可以將另一個類的對象作為成員
80.在編譯指令中,宏定義使用哪個指令( B )
A)#include B)#define C)#if D)#else
81.設類A將其它類對象作為成員,則建立A類對象時,下列描述正確的是:( B )
A)A類構造函數(shù)先執(zhí)行 B)成員構造函數(shù)先執(zhí)行
C)兩者并行執(zhí)行 D)不能確定
82.下列描述錯誤的是:( A )
A)在創(chuàng)建對象前,靜態(tài)成員不存在 B)靜態(tài)成員是類的成員
C)靜態(tài)成員不能是虛函數(shù) D)靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員
83.對于友元描述正確的是:( B )
A)友元是本類的成員函數(shù) B)友元不是本類的成員函數(shù)
C)友元不是函數(shù) D)友元不能訪問本類私有成員
84.在哪種派生方式中,派生類可以訪問基類中的protected成員( B )
A)public和private B)public和protected
C)protected和private D)僅protected
85.在每個C++程序中都必須包含的一個函數(shù)是( B )
A)main() B)MAIN() C)name() D)function()
86.設x和y均為bool量,則x&&y為真的條件是( A )
A)它們均為真 B)其中一個為真 C)它們均為假 D)其中一個為假
87.下面的哪個保留字不能作為函數(shù)的返回類型( C )
A)void B)int C)new D)long
88.假定a為一個整型數(shù)組名,則元素a[4]的字節(jié)地址為( C )
A)a+4 B)a+8 C)a+16 D)a+32
89.假定有類AB,有相應的構造函數(shù)定義,能正確執(zhí)行“AB a(4),b(5), c[3] , *p[2]={&a,&b};”語句,請問執(zhí)行完此語句后共調(diào)用該類構造函數(shù)的次數(shù)為( C )
A)3 B)4 C)5 D)6
90.假定有類AB,有相應的構造函數(shù)定義,能正確執(zhí)行 “AB a(4),b(5), c[3] , *p[2]={&a,&b};”語句,請問執(zhí)行完此語句后共調(diào)用該類析構函數(shù)的次數(shù)為( C )
A)3 B)4 C)5 D)6
91.對類中聲明的變量,下列描述中正確的是:( B )
A)屬于全局變量 B)屬于該類,某些情況下也可被該類不同實例所共享
C)只屬于該類 D)任何情況下都可被該類所有實例共享
92.假定要對類AB定義加號操作符重載成員函數(shù),實現(xiàn)兩個AB類對象的加法,并返回相加結果,則該成員函數(shù)的聲明語句為( ? )
A)AB operator+(AB & A , AB & B); B)AB & operator+(AB A);
C)AB operator+(AB & A); D)AB * operator+(AB A);