首页 > 试题广场 >

当不同的类具有相同的间接基类时,()。

[单选题]
当不同的类具有相同的间接基类时()?
  • 各派生类无法按继承路线产生自己的基类版本
  • 为了建立唯一的间接基类版本,应该声明间接基类为虚基类
  • 为了建立唯一的间接基类版本,应该声明派生类虚继承基类
  • 一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类

在派生列表中,同一基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过两个直接基类分别继承自同一间接基类,也可以直接继承某个基类,再通过另一个基类再次继承该类。但是,如果某个类派生过程中出现多次,则派生类中将包含该类的多个子对象,这种默认情况在很多有特殊要求的类中是行不通的。虚继承就是为了应对这一情况而产生,虚继承的目的是令某个类做出声明,承诺愿意共享其基类。这样不论虚基类在继承体系中出现多少次,派生类中都只包含唯一一个共享的虚基类子对象。

发表于 2018-05-26 21:46:20 回复(0)
个人认为答案B优于答案C
理由如下:
     在派生列表中,同一基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过两个直接基类分别继承自同一间接基类,也可以直接继承某个基类,再通过另一个基类再次继承该类。但是,如果某个类派生过程中出现多次,则派生类中将包含该类的多个子对象,这种默认情况在很多有特殊要求的类中是行不通的。虚继承就是为了应对这一情况而产生,虚继承的目的是令某个类做出声明,承诺愿意共享其基类。这样不论虚基类在继承体系中出现多少次,派生类中都只包含唯一一个共享的虚基类子对象。
     为了建立唯一的间接基类版本,就是要保证间接基类为虚基类,所以选项B对,而选项C说的很拗口,不知道具体怎么理解,像下面的情形,类B/类C虚继承类A,而派生类D,不需要虚继承就可以保证只有一份A,所以感觉选项C说的不太好。


发表于 2019-12-12 12:02:37 回复(0)
两种方法:

为了建立唯一的间接基类版本,应该声明基类为虚基类
为了建立唯一的间接基类版本,应该声明派生类虚继承基类

发表于 2019-03-20 21:10:28 回复(1)
出的是什么破题目,描述的不清楚
                A
     B                     C
     D                     E
D和E有相同的间接基类A,但是有个啥影响
发表于 2020-03-16 17:58:00 回复(0)
防止菱形继承出现是理解这的关键。
发表于 2022-07-14 23:23:45 回复(0)
这个题目选B
发表于 2021-05-06 09:28:02 回复(0)
书上写的是,将共同基类设置为虚基类,也就是间接派生类要虚继承基类
发表于 2022-04-01 21:48:29 回复(0)
答案是b c是错的 a是基类 b和c虚继承a d不需要虚继承b和c 也能保证内存中只有一份a
发表于 2021-01-12 22:02:59 回复(0)
按照定义看:这个题选b
发表于 2020-07-15 13:54:42 回复(0)

基类为虚基类/派生类虚继承基类


发表于 2019-04-11 12:48:44 回复(0)