《面向对象程序设计C 》

《面向对象程序设计C  》
《面向对象程序设计C  》

一、选择题(每小题3分,共48分。)

01、下列关于C++函数的叙述中,正确的是( )。

A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值

C)函数在被调用之前必须先声明 D)函数不能自己调用自己

02、下列关于类和对象的叙述中,错误的是( )。

A)一个类只能有一个对象B)对象是类的具体实例

C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系

03、在C++中,用于实现运行时多态性的是( )。

A)内联函数 B)重载函数 C)模板函数 D)虚函数

04、下列关于运算符重载的叙述中,正确的是( )。

A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载

C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参

05、对于语句 cout<

A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行

C)“x”是一个变量D)“<<”称作提取运算符

06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

class MyBASE

{ private: int k。

public: void set(int n){ k=n。}

int get( )const{ return k。}}。

class MyDERIVED: protected MyBASE

{ protected: int j。

public: void set(int m, int n){ MyBASE::set(m)。 j=n。}

int get( )const{ return MyBASE::get( )+j。 } }。

A)4 B)3 C)2 D)1

07、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const。,下列关于这个函数的叙述中,错误的是( )。

A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符

C)这是一个成员函数D)这个函数不改变类的任何数据成员的值

08、执行如下的程序段后,输出结果是( )。

cout.fill('*')。 cout.width(6)。 cout.fill('#')。 cout << 123 << endl。

A)###123 B)123### C)***123 D)123***

09、在下列函数原型中,可以作为类AA构造函数的是( )。

A)void AA(int)。 B)int AA()。 C)AA(int)const。 D)AA(int)。

10、下面四个选项中,( )是用来声明虚函数的。

A)virtual B)public C)include D)using namespace

11、实现运行时的多态性要使用( )。

A)重载函数 B)构造函数 C)析构函数 D)虚函数

12、要实现动态联编,必须通过( )调用虚函数。

A)对象指针B)成员名限定C)对象名 D)派生类名

13、以下( )成员函数表示纯虚函数。

A)virtual int vf(int)。 B)void vf(int)=0。

C)virtual void vf()=0。 D)virtual void vf(int){}

14、有如下类声明:class XA

{ private: int x。

public: XA(int n){ x=n。} }。

class XB: public XA

{ private: int y。

public: XB(int a,int b)。 }。

在构造函数XB的下列定义中,正确的是( )。

A)XB::XB(int a,int b): x(a),y(b){ }B)XB::XB(int a,int b): XA(a),y(b){ }

C)XB::XB(int a,int b): x(a),XB(b){ } D)XB::XB(int a,int b): XA(a),XB(b){ }

15、在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。则 operator+ 有个参数,operator* 有参数。( )

A)2、2 B)2、1 C)1、2 D)1、1

16、应在下列程序划线处填入的正确语句是( )。

class Base

{ public:

void fun(){cout<<"Base::fun"<

class Derived:public Base

{ void fun()

{ //显示调用基类的函数fun()

cout<<"Derived::fun"<

A)fun()。 B)Base.fun()。 C)Base::fun()。 D) Base->fun()。

二、填空题(每空2分,共20分。)

17、面向对象程序设计有四个主要特点,即抽象、封装、____和____。

18、非成员函数应声明为类的____函数才能访问这个类的private成员。

19、派生类中的成员不能直接访问基类中的____成员。

20、在用class定义一个类时,数据成员和成员函数的默认访问权限是____。

21、运算符重载函数可能是类的____函数,也可以是类的____函数,还可以是普通函数。

22、用流对象的成员函数控制输出格式时,用于设置字段宽度的流成员函数的名称是____,与之作用相同的控制符名称是____。

23、含有纯虚函数的类称为____。

@@@@@@@@@@@

四、编程题(12分)

29、编写一个程序计算“三角形、正方形、圆形”三种图形的面积,要求:

a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。

参考答案

一、选择题(每小题3分,共48分。)

01-05 CADBD

06-10 BBADA

11-16 DACBCC

二、填空题(每空2分,共20分。)

17、继承、多态性18、友元19、私有

20、private或私有21、成员、友元

22、width/setw23、抽象类

三、程序的填空、程序的执行(每题4分,共20分。)

24、counter operator + (counter c)

25、virtual

26、23,23

27、ABC

28、XY

四、编程题(12分)

29、

#include

using namespace std。

class base

{ public:

virtual float area() const

{ return 0。 }

}。

class triangle: public base

{ protected:

float bian,height。

public:

triangle(float a=0, float h=0) { bian=a。 height=h。 }

virtual float area() const

{ return bian*height/2。 }

}。

class square: public base

{ protected:

float bian。

public:

square(float a=0) { bian=a。 }

virtual float area() const

{ return bian*bian。 }

}。

class circle: public base

{ protected:

float radius。

public:

circle(float r=0) { radius=r。 }

virtual float area() const

{ return 3.14*radius*radius。 }

}。

int main()

{ triangle t(3,4)。 square s(5)。 circle c(2)。

base *p。

p=&t。 cout<<"triangle's area:"<area()<area()<area()<

}

相关主题
相关文档
最新文档