【发布时间】:2020-08-05 00:14:24
【问题描述】:
只是想仔细检查一下:C++ 标准保证成员变量按声明的顺序被 implicit 复制构造函数复制,对吗?在下面的示例中,a 在b 之前被复制,对吗? (假设A 和B 都有重要的复制构造函数,并且在复制b 之前复制a 对正确性很重要。)
struct Foo {
A a;
B b;
};
我感兴趣的是它是由标准保证还是依赖于实现?
【问题讨论】:
-
事实上,对于所有可能的类初始化,基类和成员的初始化顺序是完全定义的并且相同(直接成员按声明顺序):用户定义的构造函数,显式默认构造函数,隐式声明的构造函数、继承的构造函数或聚合初始化。
-
或者可能不适用于某些继承的构造函数?这可能是一个奇怪的案例。
标签: c++ initialization language-lawyer copy-constructor