☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

基类对象构造完毕之前调用成员函数

C++-Undefined-Behavior-60
目录 › next › previous

示例:

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

规则

ID_illMemberCall
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.