当我学习如何用C ++实现最终类时,我发现了这样一个声明:
"the most derived class's ctor needs to directly call the virtual base class's ctor."
但是,我找不到C ++标准中声明的原始内容。 (N3126)
谁能告诉我确切的页码?
提前致谢。
答案 0 :(得分:1)
在C ++ 03中,它是§12.6.25
初始化应按以下顺序进行:
- 首先,仅对于如下所述的派生类最多的构造函数,虚拟基类应按它们出现在基类有向无环图的深度优先从左到右遍历的顺序进行初始化。 ,其中“从左到右”是派生类base-specifier-list中基类名称的出现顺序。
...
在C ++ 0x(N3126)的当前草案中,它是§12.6.210,即第270页:
在非委托构造函数中,初始化按以下顺序进行:
- 首先,仅对于派生程度最高的类(1.8)的构造函数,虚拟基类按照它们出现在基类的有向非循环图的深度 - 从左到右遍历的顺序进行初始化,其中“从左到右”是派生类base-speci-list中基类出现的顺序
...
答案 1 :(得分:0)
N3126是 不 C ++标准。
这是即将推出的C ++标准的草案。
但无论如何,关于初始化的信息在关于派生类的初始化的部分中。