基类对象构造完毕之前调用成员函数
C++-Undefined-Behavior-60
示例:
struct A {
A(int);
};
struct B: A {
int i;
int fun();
B(): A(fun()), // Undefined
i(fun()) { // Well-defined
}
};
例中成员函数 fun 的返回值是基类构造函数的参数,但基类尚未开始构造,会导致未定义的行为,用成员函数 fun 初始化成员 i 则没有问题,因为此时基类对象已构造完毕。
依据
ISO/IEC 14882:2003 12.6.2(8)-undefined
ISO/IEC 14882:2011 12.6.2(13)-undefined