关于构造函数初始化列表顺序的面试题


#include <iostream>
#include <string>

using namespace std;

class base
{
private:
//调换下面两个声明则会输出预想的98,98.否则输出结果第一个为随机数,第二个
//为98
int m_i;
int m_j;
public:
base(int i) : m_j(i), m_i(m_j) {}
base() : m_j(0), m_i(m_j) {}

int get_i() {return m_i;}
int get_j() {return m_j;}
};

void main()
{
base obj(98);
cout << obj.get_i() << endl
<< obj.get_j() << endl;
system("pause");
}


[b]分析[/b]:初始化列表的初始化顺序是根据成员变量的声明顺序来执行的,所以m_i会被赋值为一个随机数。更改一下成员变量的申明顺序可以得到预想的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值