C++试题
- 格式:doc
- 大小:41.54 KB
- 文档页数:7
。
。 1
一、选择填空
1. 对定义重载函数的下列要求中,( )是错的。
GG.要求参数的个数不同;
HH. 要求参数中至少有一个类型不同;
II. 要求参数个数相同时,参数类型不同;
JJ. 要求函数的返回值不同。
2. 下列函数中,( )不能重载。
KK. 成员函数;
LL. 非成员函数;
MM. 析构函数;
NN.构造函数。
3. 下列对重载函数的描述中,( )是错的。
OO.重载函数中不允许使用缺省参数;
PP. 重载函数中编译系统会根据参数表进行选择;
QQ.不要使用重载函数来描述毫无相干的函数;
RR. 构造函数重载将会给初始化带来多种方式;
4. 下列运算符中,( )运算符不能重载。
SS. &&; B. [ ]; C. :: ; D.new
5. 下列关于运算符重载的描述中,( )是正确的。
TT. 运算符重载可以改变操作数的个数;
UU. 运算符重载可以改变优先级;
VV. 运算符重载可以改变结合性;
WW. 运算符重载不可以改变语法结构。
6. 运算符重载函数是( )。
XX.成员函数;
YY. 友元函数;
ZZ. 内联函数;
AAA. 带缺省参数的函数。
7. 关于动态联编的下列描述中,( )是错误的。
BBB. 动态联编是以虚函数为基础的;
CCC. 动态联编是在运行时确定所调用的函数代码的;
DDD. 动态联编调用函数操作是指向对象的指针或对象引用;
EEE. 动态联编是在编译时确定操作函数的;
8. 关于虚函数的描述中,( )是正确的。
FFF. 虚函数是一个static类型的成员函数;
GGG. 虚函数是一个非成员函数;
HHH. 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数;
III. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型。
9. 关于纯虚函数和抽象类的描述中,( )是错误的。
JJJ. 纯虚函数是一种特殊的虚函数,它没有具体的实现;
KKK. 抽象类是指具有纯虚函数的类;
LLL. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类;
MMM. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出; 。
。 2 10. 下列描述中,( )是抽象类的特性。
NNN. 可以说明虚函数;
OOO. 可以进行构造函数重载;
PPP. 可以定义友元函数;
QQQ. 不能说明其对象。
二、判断下列描述的正确性,对者划√,错者划×。
1.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。√
2.重载函数可以带有缺省值参数,但是要注意二义性。√
3.多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。√
4.对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。。×
5.对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。√
6.重载运算符保持原运算符的优先级和结合性不变。√
7.虚函数是用virtual关键字说明的成员函数。√
8.构造函数说明为纯虚函数是没有意义的。√
9.抽象类是指一些没有说明对象的类。×
10. 动态联编是在运行时选定调用的成员函数的。√
三、分析下列程序的输出结果。
1、
#include
class B
{
public:
B(int i){b=i+50;show();}
B(){}
virtual void show(){cout<<”B::show() called.”<
protected:
int b;
};
class D:public B
{
public:
D(int i):B(i) {d=i+100;show();}
D() {}
void show() {cout<<”D::show() called.”<
protected:
int d;
};
void main()
{
D d1(108);
}
2、 。
。 3 #include
class B
{
public:
B(){}
B(int i){b=i;}
virtual void virfun(){cout<<”B::virfun() called.\n”;}
private:
int b;
};
class D:public B
{
public:
D(){}
D(int i,int j):B(i) {d=j; }
private:
int d;
void virfun() {cout<<”D::virfun() called.\n”; }
};
void fun(B *obj)
{ obj->virfun(); }
void main()
{
D *pd=new D;
fun(pd);
}
3、
#include
class A
{
public:
A(){ver=’A’;}
void print() {cout<<”The A version”<
protected:
char ver;
};
class D1:public A
{
public:
D1(int number){info=number; ver=’1’;}
void print()
{ cout<<”The D1 info: ”<
private:
int info; 。
。 4 };
class D2:public A
{
public:
D2(int number){info=number;}
void print()
{cout<<”The D2 info”<
private:
int info;
};
class D3:public D1
{
public:
D3(int number):D1(number)
{info=number; ver=’3’;}
void print()
{cout<<”The D3 info”<
private:
int info;
};
void print_info(A *p)
{ p->print(); }
void main()
{
A a;
D1 d1(4);
D2 d2(100);
D3 d3(-25);
print_info(&a);
print_info(&d1);
print_info(&d2);
print_info(&d3);
}
4、
#include
class A
{
public:
A() {ver=’A’;}
virtual void print() {cout<<”The A version”<
protected:
char ver;
};
class D1:public A 。
。 5 {
public:
D1(int number)
{
info=number;ver=’1’;
}
void print()
{
cout<<”The D1 info:”<
}
private:
int info;
};
class D2:public A
{
public:
D2(int number) {info=number;}
void print()
{
cout<<”The D2 info:”<
}
private:
int info;
};
class D3:public D1
{
public:
D3(int number) :D1(number)
{ info=number;ver=’3’;}
void print()
{
cout<<”The D3 info:”<
}
private:
int info;
};
void print_info(A *p)
{ p->print(); }
void main()
{
A a;
D1 d1(4);
D2 d2(100);
D3 d3(-25);