《面向对象程序设计C++》期末考试试卷
一、选择题(每小题3分,共48分。)
01、下列关于C++函数的叙述中,正确的是(  C )。
A)每个函数至少要具有一个参数  B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明  D)函数不能自己调用自己
02、下列关于类和对象的叙述中,错误的是(  A  )。
A)一个类只能有一个对象        B)对象是类的具体实例
C)类是对某一类对象的抽象      D)类和对象的关系是一种数据类型与变量的关系
03、在C++中,用于实现运行时多态性的是(  D  ).
A)内联函数    B)重载函数    C)模板函数D)虚函数
04、下列关于运算符重载的叙述中,正确的是(  B  )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+  D)重载二元运算符时,必须声明两个形参
05、对于语句 cout〈<x〈〈endl;错误的是描述是( D )。
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”<〈endl;}  };
class Derived:public Base
{ void fun()
{      //显示调用基类的函数fun()
cout〈〈"Derived::fun"〈<endl;}};
A)fun();  B)Base.fun(); C)Base::fun();  D) Base->fun();
二、填空题(每空2分,共20分。)
17、面向对象程序设计有四个主要特点,即抽象、封装、_继承___和__多态性__.
18、非成员函数应声明为类的_友元___函数才能访问这个类的private成员。
19、派生类中的成员不能直接访问基类中的_私有___成员.
20、在用class定义一个类时,数据成员和成员函数的默认访问权限是__private__。
21、运算符重载函数可能是类的_成员___函数,也可以是类的_友元___函数,还可以是普通函数。
22、用流对象的成员函数控制输出格式时,用于设置字段宽度的流成员函数的名称是width____,与之作用相同的控制符名称是_setw___。
23、含有纯虚函数的类称为_抽象类___。
三、程序的填空、程序的执行(每题4分,共20分.)
29、编写一个程序计算“三角形、正方形、圆形"三种图形的面积,要求:
a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。
解:程序如下:
#include <iostream〉
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; }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。