一. 單選題(每題4分,15題,共60分)
1.考慮函數(shù)原型void hello(int a,int b=7,char pszC=""),下面的函數(shù)調(diào)用鐘,屬于不合法調(diào)用的是:C
A hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#")
2.下面有關(guān)重載函數(shù)的說(shuō)法中正確的是:C
A.重載函數(shù)必須具有不同的返回值類型 B.重載函數(shù)形參個(gè)數(shù)必須不同
C.重載函數(shù)必須有不同的形參列表 D.重載函數(shù)名可以不同
重載:必須同名函數(shù);必須參數(shù)表不同(包含參數(shù)個(gè)數(shù)不同;參數(shù)類型不同;或參數(shù)個(gè)數(shù)與類型都不同)
3.分析一下程序的運(yùn)行結(jié)果:C
#include
class CBase
{
public:
CBase(){cout<<”constructing CBase class”<
~CBase(){cout<<”destructing CBase class”<
};
class CSub : public CBase
{
public:
CSub(){cout<<”constructing CSub class”<
~CSub(){cout<<”destructing CSub class”<
};
void main()
{
CSub obj;
}
A. constructing CSub class B. constructing CBase class
constructing CBase class constructing CSub class
destructing CSub class destructing CBase class
destructing CBase class destructing CSub class
C. constructing CBase class
constructing CSub class
destructing CSub class
destructing CBase class
D. constructing CSub class
constructing CBase class
destructing CBase class
destructing CSub class
子類對(duì)象生成時(shí):先調(diào)用父類的構(gòu)造函數(shù),然后在調(diào)用子類的構(gòu)造函數(shù);
析構(gòu)時(shí)相反
4.在一個(gè)cpp文件里面,定義了一個(gè)static類型的全局變量,下面一個(gè)正確的描述是:
A.只能在該cpp所在的編譯模塊中使用該變量
B.該變量的值是不可改變的
C.該變量不能在類的成員函數(shù)中引用
D.這種變量只能是基本類型(如int,char)不能是C++類型
Static全局變量和普通全局變量:
針對(duì):一個(gè)工程里有多個(gè)cpp文件時(shí)
相同點(diǎn):存儲(chǔ)方式相同,都是靜態(tài)存儲(chǔ);
不同點(diǎn):作用域不同。
普通全局變量---作用域是整個(gè)源程序(含有多個(gè)源文件),在各個(gè)源文件中都有效
Static全局變量----作用域是當(dāng)前源文件
5.觀察下面一段代碼:
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
ClassC aObject;
ClassA pA=&aObject;
ClassB pB=&aObject;
ClassC pC=&aObject;
關(guān)于pA,pB,pC的取值,下面的描述中正確的是:
A.pA,pB,pC的取值相同. B.pC=pA+pB
C.pA和pB不相同 D.pC不等于pA也不等于pB
6.參照1.5的代碼,假設(shè)定義了ClassA pA2,下面正確的代碼是:
A.pA2=static_cast(pB);
B.void pVoid=static_cast(pB);
pA2=static_cast(pVoid);
C.pA2=pB;
D.pA2=static_cast(static_cast(pB));
7.參照1.5的代碼,下面那一個(gè)語(yǔ)句是不安全的:
A.delete pA B.delete pB C.delete pC
刪除那個(gè)都有錯(cuò)誤,編譯是無(wú)錯(cuò)誤,運(yùn)行是有錯(cuò)誤
8.下列程序的運(yùn)行結(jié)果為:
#include
void main()
{
int a=2;
int b=++a;
cout<
}
A.0.5 B.0 C0.7 D.0.6666666-
9.有如下一段代碼:
#define ADD(x,y) x+y
int m=3;
m+=mADD(m,m); //展開(kāi)后為m=m+mm+m=3+33+3
則m的值為:
A.15 B.12 C.18 D.58
10.如下是一個(gè)帶權(quán)的圖,圖中結(jié)點(diǎn)A到結(jié)點(diǎn)D的關(guān)鍵路徑的長(zhǎng)度是:
A.13 B.15 C.28 D.58
11.下面的模板聲明中,正確的是:
A.template //改為template
B.template
C.template
D.template//分號(hào)改為逗號(hào)
12.在Windows編程中下面的說(shuō)法正確的是:
A.兩個(gè)窗口,他們的窗口句柄可以是相同的 B.兩個(gè)窗口,他們的處理函數(shù)可以是相同的
C.兩個(gè)窗口,他們的窗口句柄和窗口處理函數(shù)都不可以相同.
13.下面哪種情況下,B不能隱式轉(zhuǎn)換為A?
A.class B:public A{} B.class A:public B{}
C.class B{operator A();} D.class A{A(const B&);}
14.某公司使用包過(guò)濾防火墻控制進(jìn)出公司局域網(wǎng)的數(shù)據(jù),在不考慮使用代理服務(wù)器的情況下,下面描述錯(cuò)誤的是”該防火墻能夠( )”.
A.使公司員工只能訪問(wèn)Internet上與其業(yè)務(wù)聯(lián)系的公司的IP地址.
B.僅允許HTTP協(xié)議通過(guò),不允許其他協(xié)議通過(guò),例如TCP/UDP.
C.使員工不能直接訪問(wèn)FTP服務(wù)器端口號(hào)為21的FTP地址.
D.僅允許公司中具有某些特定IP地址的計(jì)算機(jī)可以訪問(wèn)外部網(wǎng)絡(luò)
15.數(shù)字字符0的ASCII值為48,若有以下程序:
main()
{
char a=’1’,b=’2’;
printf(“%c,”,b++);
printf(“%d\n”,b-a);
}
程序運(yùn)行之后的輸出結(jié)果是:
A.3,2 B.50,2 C.2,2 D.2,50