PTA 多态性实验(判断,选择题解析)

 

1-1

因为静态成员函数不能是虚函数,所以它们不能实现多态。 (5分)

正确答案:正确

解析:

静态成员函数不能是虚函数。静态成员函数对于每一个类只有一份代码,所有的对象共享这份代码,它不归某个对象所有,所以没有动态绑定的必要性,不能被继承,只属于该类。

1-2

构造函数可以声明为虚函数。 (1分)

正确答案:错误

构造函数不能为虚函数。构造函数一般是用来初始化对象的,因而只有在一个对象生成之后才能发挥多态作用。虚函数表在构造函数调用之后才建立,因而构造函数不可能声明为虚函数。虚函数的调用需要虚函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址来调用虚函数

1-3

在析构函数中调用虚函数时,采用动态束定。 (1分)

正确答案:错误

解析:

当存在类继承并且析构函数中有必须要进行的操作时(如需要释放某些资源,或执行特定的函数)析构函数需要是虚函数,否则若使用父类指针指向子类对象,在delete时只会调用父类的析构函数,而不能调用子类的析构函数,从而造成内存泄露或达不到预期结果

1-4

在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定。 (1分)

正确答案:正确

1-5

构造函数可以声明为纯虚函数。 (1分)

正确答案:错误解析:

对于抽象类来说,C++是不允许它去实例化对象的。也就是说,抽象类无法实例化对象,所以它不需要,也不允许有构造函数。

 

1-6

虚函数不能是类的静态成员。 (1分)

正确答案:正确

解析:

静态成员函数不能是虚函数

1-7

重定义虚函数的派生类必须是公有继承的。 (1分)

正确答案:正确

多态的实现必须以public方式继承。

1-8

对于从基类继承的虚函数,派生类也可以不进行重定义。 (1分)

正确答案:正确

1-9

纯虚函数与函数体为空的虚函数等价。 (1分)

正确答案:错误

1-10

多态类提供了一种动态多分支派送机制。 (1分)

正确答案:正确

2-1

关于动态绑定的下列描述中,( )是错误的。 (2分)

  1. 动态绑定是以虚函数为基础的
  2. 动态绑定在运行时确定所调用的函数代码
  3. 动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的
  4. 动态绑定是在编译时确定操作函数的

正确答案:D

解析:

动态绑定在运行时确定所调用的函数代码,重载函数是在编译时确定操作函数的。

2-2

关于虚函数的描述中,( )是正确的。 (2分)

  1. 虚函数是一个static 类型的成员函数
  2. 虚函数是一个非成员函数
  3. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
  4. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型

正确答案:C

解析:

A.静态成员函数不能是虚函数。

B.虚函数是成员函数

D.派生类的虚函数与基类的虚函数具有相同的参数个数和类型

2-3

关于纯虚函数和抽象类的描述中,( )是错误的。 (2分)

  1. 纯虚函数是一种特殊的虚函数,它没有具体的实现
  2. 抽象类是指具有纯虚函数的类
  3. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
  4. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

正确答案:C

解析:

一个基类中说明有纯虚函数,该基类的派生类可以也是抽象类。

2-4

下列描述中,( )是抽象类的特性。 (2分)

  1. 可以说明虚函数
  2. 可以进行构造函数重载
  3. 可以定义友元函数
  4. 不能定义该类对象

正确答案:D

2-5

在C++语言中设置虚基类的目的是( ) 。 (2分)

  1. 简化程序代码
  2. 提高程序的运行效率
  3. 解决多继承造成的二义性问题
  4. 缩短程序的目标代码

正确答案:C

2-6

以下关于C++语言中继承的叙述中,错误的是( )。 (2分)

  1. 继承是父类和子类之间共享数据和方法的机制
  2. 继承定义了一种类与类之间的关系
  3. 继承关系中的子类将拥有父类的全部属性和方法
  4. 继承仅仅允许单继承,即不允许一个子类有多个父类

正确答案:D

继承允许单继承和多继承。

2-7

虚析构函数的作用是。 (2分)

  1. 虚基类必须定义虚析构函数
  2. 类对象作用域结束时释放资源
  3. delete动态对象时释放资源
  4. 无意义

正确答案:C

2-8

以下说法中正确的是() (2分)

  1. 在虚函数中不能使用this指针
  2. 在构造函数中调用虚函数不是动态联编
  3. 抽象类的成员函数都是纯虚函数
  4. 构造函数和析构函数都不能是虚函数

正确答案:B

解析:

A.在虚函数中可以使用this指针

C.有纯虚函数的类是抽象类。

D.析构函数可以是虚函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值