首页 > 试题广场 >

阅读c++代码输出() class base1{ &nb

[单选题]
阅读c++代码输出()
class base1{
    private: int a,b;
    public:
    base1 ( int i ) : b(i+1),a(b){}
    base1():b(0),a(b){}
    int get_a(){return a;}
    int get_b(){return b;}
};
int main()
{
    base1 obj1(11);
    cout<<obj1.get_a()<<endl<<obj1.get_b()<<endl;
    return 0;
}

  • 12 12
  • 随机数 12
  • 随机数 随机数
  • 12 随机数
初始化列表是按照成员被定义的顺序执行的。
这里a比b先定义,所以a的初始化比b的先执行。
发表于 2019-04-26 17:07:14 回复(0)
我猜和函数调用的参数一样,顺序是从后面到前面,即对于
base1 ( int i ) : b(i+1),a(b){}
先执行a(b),再执行b(i+1)。
执行a(b)的时候b还未初始化故为随机数。
发表于 2018-11-13 11:35:14 回复(0)