首页 > 试题广场 >

设置虚基类的目的是()?

[单选题]

设置虚基类的目的是()?

  • 简化程序
  • 消除二义性
  • 提高运行效率
  • 减少目标代码
下面的介绍很简单!

多重继承图示:(以左边为例)

多重继承定义:
一个派生类(D)有2个或2个以上的基类(B和C);

多重继承引起的二义性:
假如上述这些基类(B和C)具有相同的基类A,A中的成员数据和成员函数,最终都会以双份的形式拷贝到类D中,
那么调用的时候就会出现二义性问题。

虚基类:
专门用来解决多重继承引起的二义性问题;(可以理解为D直接从A继承)
虚基类的具体实现的注意细节有很多,这里不再列举了,我认为只需要了解原理即可。

尽管C++或其他OO语言支持多重继承,但在实际软件开发中多重继承用的并不多,
原因在于多重继承过手复杂。因此,在C#中已经不再支持多重继承了。
发表于 2018-06-29 10:41:42 回复(0)
B正确 虚基类是为了强调"这个类型的某些方法没有意义, 只是为了继承, 不要构造这种类型的对象"
发表于 2018-06-04 10:12:08 回复(1)
虚继承==虚基类?
发表于 2018-05-11 20:23:59 回复(2)
实际上是通过虚函数动态绑定来消除二义性

在C++中,如果一个派生类从多个基类继承同名的非虚函数,那么在使用这个函数时就会出现二义性。为了解决这个问题,C++引入了虚继承的概念,从而产生了虚基类。虚基类是被声明为虚基类的直接或间接基类,在虚基类中定义的成员在派生类中仅出现一次,从而避免了二义性问题。

虚继承是通过在虚基类和派生类之间建立一个虚基类表来实现的,这个表记录了虚基类成员在派生类对象中相对于虚基类的位置。由于虚继承需要维护虚基类表,所以在一定程度上会影响运行效率,但这个影响通常不大。

编辑于 2023-11-10 14:25:10 回复(0)
继承的动作叫虚继承,父类叫做虚基类

发表于 2023-01-28 14:14:28 回复(0)
设置虚基类的目的是消除多重继承的二义性,菱形继承在两个基类拥有相同方法名的方法是,派生类调用该方法出现二义性
发表于 2022-03-07 13:47:55 回复(0)
这题有问题,虚基类不是虚继承,虚基类的作用是提供接口
发表于 2022-11-01 19:50:09 回复(0)
设置虚基类的目的是消除多重继承的二义性,菱形继承在两个基类拥有相同方法名的方法是,派生类调用该方法出现二义性
发表于 2022-05-06 18:20:27 回复(0)
下面的介绍很简单!

多重继承图示:(以左边为例)

多重继承定义:
一个派生类(D)有2个或2个以上的基类(B和C);

多重继承引起的二义性:
假如上述这些基类(B和C)具有相同的基类A,A中的成员数据和成员函数,最终都会以双份的形式拷贝到类D中,
那么调用的时候就会出现二义性问题。

虚基类:
专门用来解决多重继承引起的二义性问题;(可以理解为D直接从A继承)
虚基类的具体实现的注意细节有很多,这里不再列举了,我认为只需要了解原理即可。

尽管C++或其他OO语言支持多重继承,但在实际软件开发中多重继承用的并不多,
原因在于多重继承过手复杂。因此,在C#中已经不再支持多重继承了。
发表于 2019-04-09 19:10:51 回复(0)