AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 世界职业院校技能大赛汽车工程系选拔理论考试题库 题目详情
CAF88E2CAFE00001135B77F0847512A7
世界职业院校技能大赛汽车工程系选拔理论考试题库
1,000
单选题

如何定义虚基类?

A
class Base {};
B
class Base virtual {};
C
class Derived : virtual Base {};
D
class Base : virtual {};

答案解析

正确答案:C

解析:

好的,让我们来详细解析这道关于虚基类的题目。 ### 题目背景 在C++中,虚基类(virtual base class)用于解决多继承中的菱形问题(diamond problem)。当一个派生类从多个基类派生,而这些基类又有一个共同的基类时,如果没有使用虚基类,会导致派生类中出现多个相同基类的副本,从而引发二义性问题。使用虚基类可以确保派生类中只有一个共同基类的实例。 ### 选项解析 **A. `class Base {};`** - 这是一个普通的基类定义,没有任何特殊之处。它没有涉及到虚基类的概念。 **B. `class Base virtual {};`** - 这个语法是错误的。在C++中,`virtual`关键字不能直接用在基类的定义中。`virtual`关键字只能用在派生类的继承列表中。 **C. `class Derived : virtual Base {};`** - 这是正确的语法。`virtual`关键字放在派生类的继承列表中,表示`Base`是虚基类。这样做的目的是确保在多继承的情况下,`Derived`类中只有一个`Base`类的实例。 **D. `class Base : virtual {};`** - 这个语法也是错误的。`virtual`关键字不能直接用在基类的定义中。它必须用在派生类的继承列表中。 ### 为什么选择C 选择C是因为它是唯一正确地使用了`virtual`关键字来定义虚基类的选项。通过在派生类的继承列表中使用`virtual`关键字,可以确保在多继承的情况下,派生类中只有一个共同基类的实例,从而避免二义性问题。 ### 示例 假设我们有以下类层次结构: ```cpp class Base { public: int x; }; class Derived1 : virtual Base { public: int y; }; class Derived2 : virtual Base { public: int z; }; class Final : public Derived1, public Derived2 { public: int w; }; ``` 在这个例子中,`Base`是虚基类,`Derived1`和`Derived2`都从`Base`虚继承。`Final`类从`Derived1`和`Derived2`派生。由于`Base`是虚基类,`Final`类中只有一个`Base`类的实例,而不是两个。 希望这个解释对你有所帮助!如果你有任何其他问题,请随时提问。
世界职业院校技能大赛汽车工程系选拔理论考试题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码