我可以在标准(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和空的正文调用A
和Derived()
的构造函数。 最佳答案
引用标准草案N4527 12.6.2 / 9初始化基础和成员[class.base.init](重点是):
注意:正如@Howard Hinnant在下面的注释中指出的那样,在C++ 14(N4141)“最终化”标准中,以上引用位于第8段而不是第9段。