当前位置:文档之家› C笔试题目带答案

C笔试题目带答案

C笔试题目带答案
C笔试题目带答案

姓名: __________ 时间: _ _ _ _ _ _ _ _ _ _ _

DCCBBAADAD

一、选择题(1*10=10)

1 .如果派生类以proctected方式继承基类,则原基类的protected和public成员在派生类的访问性分别是:D

A. public 和public

B. public 和protected

C. protected和public

D. protected和protected

解析:通过protected方式继承基类后,原基类的私有成员不可访问,而protected

和public成员均变成protected成员。

答案:D

2.有如下头文件:

intF1();

staticintF2();

classsCA

{

public:

intF3();

staticintF4();

};

在所描述的函数中,具有隐含this 指针的是:C

A .F1

B .F2

C .F3

D .F4

本题考查的是this 指针。

this 指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this 指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用this 指针。

this指针是指向对象本身的指针,它只存在于类的非静态成员中。fl,f2不是成

员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;含有this 指针的函数在调用时按thiscall 调用约定调用。

故本题答案为C。

3. 派生类的成员函数不能访问基类的:C

A .共有成员和保护成员

B .共有成员

C.私有成员 D .保护成员

本题考查的是继承的类型。

类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private 的,则不能被继承。

故本题答案为C。

4. 按照“后进先出”原则组织数据的数据结构是B

A .队列

B .栈

C.双向链表 D .二叉树

答案为B

5.下列关于虚函数的说明中,正确的是: B

A .从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数

D .抽象类中的中的成员函数都是虚函C.只能通过指针或者引用调用虚函数

数。

答案为B。

6.已知Value是个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是:A

A. Valueoperator+(Valuev,inti);

B.Valueoperator+(Valuev=value,i nti);

D. Valueoperator+(Valuev=value,inti=O)

C. Valueoperator+(Valuev,int=O);

7.有如下类的定义:

ClassMyClass

{

in tvalue;

public:

MyClass(i ntn ):value( n){}

in tgetValue()co nst{returnvalue;}

};

则类Myclass的构造函数的个数是:A

A. 1个

B. 2个

C. 3个

D. 4个

还有默认拷贝构造函数,应该选B

8 ?有如下类的定义:

classC on sta nts

{

public:

staticdoubleGetPI(void){return3.14159;}

};

Con sta ntsc on sta nts;

下列各组语句中,能输出3.14159的是:B

A. cout?constants->GetPI()和cout<

B. cout?constants.GetPI()和cout<

C. cout?constants->GetPI()和cout<GetPI();

D. cout?constants.GetPI()和cout<

9. 有如下程序:

#in clude

usingn amespacestd;

classVAC

{

public:

in tf()co nst{return3;}

in tf(){return5;}

};

in tmai n()

VACvl;

con stVACv2;

cout<

return。;

}

运行时的输出结果是:A

A. 53

B. 35

C. 55

D. 33

10. 有如下类声明:

classBase

{

protected:

in tam ount;

public:

Base(i ntn=0):am oun t( n){}

in tgetAmou nt()co nst{returnamou nt;}

};

classDerived:publicBase

{

protected:

in tvalue;

public:

Derived(i ntm,i ntn ):value(m),Base( n){}

in tgetData()c on st{returnv alue+amou nt;}

};

已知x是一个Derived对象,则下列表达式中正确的是:B

A. x.value+x.getAmount();

B. x.getData()+x.getAmount();

C. x.getData()xamount;

D. x.value+x.amount;

二、填空题(8*2=16)

400_64444return*this_DogspeakVoice

1. 下列中a的值是_400_

#defin eAAA200

#defin eBBBAAA+100

in ta=BBB*2

2. 以下为WindowsNT下的32位C++程序,请计算sizeof的值'

charstr[]= “ Hello ”;char*p=str;

intn=10;

请计算

sizeof(str)= ___ 5____

sizeof(p)= __ 4 ___

sizeof(n)= __ 4 ____

voidFu nc(charstr[100])

//请计算

sizeof(str)= __ 4 _____

}

void*p=malloc(100);

〃请计算

sizeof(p)= ____ 4___

3. 补充完整下面的类定义:

classXCH{

char*a;

public:

XCH(char*aa){// 构造函数

a=n ewchar[strle n( aa)+1]; strcpy(a,aa);

}

XCH&operator=(constXCH&x){〃重载赋值函数delete[]a;

a=n ewchar[strle n( x.a)+1];

strcpy(a,x.a);

}

~XCH(){delete[]a;}

};

___ return*this _____________

4. 请写出下面程序的输出结果

#in clude

usingn amespacestd;

classA ni mal{

public:

virtualchar*getType()co nst{return"A ni mal";} virtualchar*getVoice ()con

st{return"Voice";}

};

classDog:publicA ni mal{

public:

char*getType()co nst{return"Dog";} char*getVoice ()con st{return"Woof";} }; voidtype(A ni mal&a){cout<

Dogd;type(d);cout<<"speak";speak(d);cout<

}

ogspeakVoice

、问答题(5*10+9+15=74)

1. 编写类String 的拷贝构造函数和赋值函数(可以调用C++/C 的字符串库函 数)(15) o

已知类String 的原型为:

classStri ng

{

public:

Stri ng(co nstchar*str=NULL);

Stri ng(c on stStri ng&o ther);

~Stri ng(void); String&operate=(constString&other); 〃赋值函数

private:

char*m_data; };

请编写String 的上述4个函数。

//String 的析构函数

String::~String(void)//3 分

{

delete[]m_data;

〃由于m_data 是内部数据类型,也可以写成 deletem_data;

} 一 一 //String 的普通构造函数

String::String(constchar*str)//6 分

{

if(str==NULL)

{

m_data=newchar[1];/若能加NULL 判断则更好

*m_data= 0';

} else

{

in tle ngth=strle n( str);

m_data=newchar[length+1];/若能加 NULL 判断则更好 strcpy(m_data,str); }

}

〃拷贝构造函数

String::String(constString&other)//3 分

{

in tle ngth=strle n( other.m_data);〃普通构造函数 〃拷贝构造函

〃用于保存字符串

相关主题
文本预览
相关文档 最新文档