我可以在标准(C++ 14)中的哪儿找到一条子句,该子句说明用户定义的默认构造函数具有空的mem-initializer-list和空的主体为每个基类和每个成员子对象调用默认构造函数。例如,考虑以下代码:

#include <iostream>
class A{
public:
    A() {std::cout << "A" << '\n'; }
};

class Base{
public:
    Base() { std::cout << "Base" << '\n'; }
};

class Derived : public Base {
    A a;
public:
    Derived() {}
};

int main()
{
    Derived d;
}

用户声明的构造函数Base使用空的mem-initializer-list和空的正文调用ADerived()的构造函数。

最佳答案

引用标准草案N4527 12.6.2 / 9初始化基础和成员[class.base.init](重点是):



注意:正如@Howard Hinnant在下面的注释中指出的那样,在C++ 14(N4141)“最终化”标准中,以上引用位于第8段而不是第9段。

10-08 13:34