使用抽象类构造函数的虚拟继承

时间:2011-09-14 21:08:38

标签: c++ oop

我遇到了以下问题:有一个抽象基类,还有两个实际上从基类继承的抽象类,并且作为结论必须使用所有需要的参数调用它的构造函数。

但是现在,我得到了一个继承两个二阶类的“普通”类,因此必须自己调用baseclass-constructor(因为基类几乎从二阶类继承),但是两个二阶构造函数都将参数传递给基类构造函数。

是否有可能以一种不需要传递构造函数的方式实现构造函数,在这种情况下是未使用的参数?

我希望我能够准确地描述我的问题,如果有任何问题我会乐意回答。

1 个答案:

答案 0 :(得分:1)

最终找到了它。

  

§12.6.2/ 7 [class.base.init]

     

使用mem-initializer中的expression-list或braced-init-list   初始化指定的子对象(或者,如果是   委托构造函数,完成类对象)   用于直接初始化的8.5的初始化规则。该   每个mem-initializer执行的初始化构成一个   充分表达。 mem-initializer中的任何表达式都被评估为   执行初始化的全表达式的一部分。 :一种   mem-initializer,其中mem-initializer-id表示虚拟基础   在执行任何类的构造函数时,将忽略class   不是派生最多的课程。

所以,传递参数。无论如何他们都会被忽视。让事情变得非常简单!