没有合适的资源?快使用搜索试试~ 我知道了~
C++网络作业6答案.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2022-06-20
10:56:41
上传
评论
收藏 77KB DOC 举报
温馨提示
试读
20页
C++网络作业6答案.doc
资源推荐
资源详情
资源评论
作业 4
一、 选择题
1. 下列关于动态联编的描述中,错误的是_________。D
A)动态联编是以虚函数为基础的
B)动态联编是在运行时确定所调用的函数代码的
C)动态联编调用函数操作是指向对象的指针或对象引用
D)动态联编是在编译时确定操作函数的
注:先期联编也称静态联编,迟后联编也称动态联编。
注释:动态联编一直要到程序运行时才能确定调用哪个函数。
虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但
有虚函数存在时,必须同时满足下列条件,才能够实现动态联编:
● 类之间满足子类型关系;
● 调用虚函数操作的是指向对象的指针或者对象引用:或者是由成员函数调用
虚函数。
2 关于虚函数的描述中,正确的是________。D
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
C)虚函数既可以在函数说明时定义,也可以在函数实现时定义
D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
注释:虚函数是非静态的成员函数。它不能是友元函数,但可以在另一个类中被声明
为友元函数。
虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实
现的时候.
派生类的虚函数与基类中对应的虚函数必须满足下列条件,否则派生类中的虚函
数将丢失其虚特性,在调用时进行静态联编:
● 派生类中的虚函数与基类中的虚函数具有相同的名称:
● 派生类中的虚函数与基类中的虚函数具有相同的参数个数和相同的对应参数
类型:
● 派生类中的虚函数与基类中的虚函数的返回值或者相同,或者都返回指针或
引用,并且派生类虚函数所返回的指针或引用的基类型是基类中的虚函数所
返回的指针或引用的基类型的子类型。
3 在下面四个选项中,________是用来声明虚函数的。A
A)virtual B)public C)using D)false
注释:说明虚函数的一般格式如下:
virtua1<函数返回类型>〈函数名>(〈参数表〉)
4 对虚函数的调用________。D
A)一定使用动态联编 B)必须使用动态联编
C)一定使用静态联编 D)不一定使用动态联编
注释:参见第 1 题的注释。
5 实现运行时的多态性要使用___________。D
A)重载函数 B)构造函数 C)析构函数 D)虚函数
注释:参见第 1 题的注释。
6 要实现动态联编,必须通过____调用虚函数。A
A)对象指针 B)成员名限定 C)对象名 D)派生类名
注释:参见第 1 题的注释。
7 在派生类中重新定义虚函数时,除了_____方面,其他方面都必须与基类中相应的
虚函数保持一致。D
A)参数个数 B)参数类型 C)函数名称 D)函数体
注释:参见第 2 题的注释。
8 下面关于构造函数和析构函数的描述,错误的是__。D
A)析构函数中调用虚函数采用静态联编
B)对虚析构函数的调用可以采用动态联编
C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D)构造函数可以声明为虚函数
注释:构造函数不能声明为虚函数,但析构函数可以声明为虚函数。当基类的析构函
数声明为虚函数时,无论派生类是否使用 virtual 关键字说明,派生类的析构函数一定
是虚函数,对缺省析构函数亦然。而且,如果满足动态联编的其他条件,对虚析构函
数的调用将采用动态联编。
构造函数不能声明为虚函数,但在构造函数中可以调用虚函数。在构造函数或析
构函数中调用虚函数,将采用静态联编.
9 关于纯虚函数和抽象类的描述中,错误的是__。C
A)纯虚函数是一种特殊的虚函数,它没有具体的实现
B)抽象类是指具有纯虚函数的类
C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
注释:带有纯虚函数的类称为抽象类。抽象类中的纯虚函数的实现由派生类给出:
但派生类仍可不给出纯虚函数的定义,继续作为抽象类存在.
10 下列描述中,____是抽象类的特性。D
A)可以说明虚函数 B)可以进行构造函数重载
C)可以定义友元函数 D)不能说明其对象
注释:抽象类区别于其他类的最根本的特征是不能定义对象。
11 _______是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生
类都必须定义自己的版本。 C
A)虚析构函数 B)虚构造函数 C)纯虚函数 D)静态成员函数
12 如果一个类至少有一个纯虚函数,那么就称该类为__。A
A)抽象类 B)虚基类 C)派生类 D)以上都不对
13 以下___成员函数表示纯虚函数。C
A)virtual int vf(int); B)void vf(int)=0;
C)virtual void vf()=0; D)virtual void vf(int)()
注释:纯虚函数的声明格式如下:
virtual〈函数返回类型><函数名〉(<参数表〉)=0;
注意纯虚函数与虚函数体为空的区别。纯虚函数根本就没有函数体,而空的虚
函数的函数体为空:前者所在的类是抽象类,不能直接进行实例化,而后者所在的
类是可以实例化的:
14 下面的描述中,正确的是_____。A
A)virtual 可以用来声明虚函数
B)含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C)即使基类的构造函数没有参数,派生类也必须建立构造函数
D)静态数据成员可以通过成员初始化列表来初始化
注释:virtual 关键字既可以用来声明虚基类,也可以用来声明虚函数。
含有纯虚函数的类是抽象类,它不能用来定义对象。
静态数据成员的初始化必须在类体外进行。
如果所有的基类和子对象构造函数都不需要参数,派生类也不需要参数时,派
生类构造函数可以不定义。
15 在下面程序中,A、B、C、D 四句编译时不会出现错误的是__。A
#include<iostream。h>
class Base
{
public:
Base(){ }
Base(int c): count(c){ }
virtual void print() const=0;
private:
int count;
};
class Derived: public Base
{
public:
Derived() :Base(0 ) { }
Derived(int c): Base(c) { }
void print()const { cout<<”Derived"〈<endl; }
};
void main()
{
Derived d(10);
Base *pb;
pb=&d; //A
Base & cb=d;
Derived dd=*pb;
Derived &cd=cb; //C
Base bb=d; //D
}
注释:B 和 C 处不符合赋值兼容规则。D 处出错是因为 Base 是含有纯虚函数的抽象
类,不能建立抽象类的对象。
16 在下面程序中,A,B、C、D 四句编译时出现错误的是___.C
class A //A
{
public: //B
A( ){ func();} //C
virtual void func()=0; //D
};
注释:构造函数中不能调用纯虚函数,但可以调用虚函数.
剩余19页未读,继续阅读
资源评论
xinkai1688
- 粉丝: 315
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功