1、《面向对象程序设计C++》期末考试试卷 一、选择题(每小题3分,共48分。) 01、下列关于C++函数的叙述中,正确的是( )。 A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 02、下列关于类和对象的叙述中,错误的是( )。 A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系 03、在C++中,用于实现运行时多态性的是( )。 A)内联函数
2、B)重载函数 C)模板函数 D)虚函数
04、下列关于运算符重载的叙述中,正确的是( )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参
05、对于语句 cout< 3、员和成员函数的个数是( )。
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( ) 4、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. 5、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)构造函数 6、 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;
publ 7、ic: 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){ } 8、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"< 9、ublic Base
{ void fun()
{ //显示调用基类的函数fun()
cout<<"Derived::fun"< 10、成员。
20、在用class定义一个类时,数据成员和成员函数的默认访问权限是____。
21、运算符重载函数可能是类的____函数,也可以是类的____函数,还可以是普通函数。
22、用流对象的成员函数控制输出格式时,用于设置字段宽度的流成员函数的名称是____,与之作用相同的控制符名称是____。
23、含有纯虚函数的类称为____。
三、程序的填空、程序的执行(每题4分,共20分。)
24、以下程序是定义一个计数器类counter,对其重载运算符“+”,请填空。
class counter
{ private: int n;
public:
cou 11、nter() {n=0;}
counter(int i){n=i;}
____ //运算符重载函数
{ counter t; t.n=n+c.n; return t; }
void disp() {cout<<"n="< 12、 fun()
{ cout<<1; }
};
class Derived: public Base
{ public:
void fun( ) { cout<<2; }
};
int main( )
{ Base *p= new Derived;
p->fun( );
delete p;
return 0; }
26、写出执行下面程序的输出结果。
void fun(int &x, int y)
{ int t=x; x=y; y=t; }
int main( )
{ int a[2] = {23, 42};
fun(a[1],






