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);