【笔试题】result变量的输出结果是多少?

来源:互联网 发布:java实现bt下载 编辑:程序博客网 时间:2024/05/16 17:13
#include<iostream>using namespace std;int i = 1;class MyCls{public:MyCls():m_nFor(m_nThd), m_nSec(i++) ,m_nFir(i++) ,m_nThd(i++){m_nThd = i;}void echo(){cout << "result:" << m_nFir + m_nSec + m_nThd + m_nFor << endl;}private:int m_nFir;int m_nSec;int m_nThd;int &m_nFor;};int main(){MyCls oCls;oCls.echo();return 0;}

wKioL1biWaqxuQ27AAAE3Tixx1M462.png

首先要明白变量初始化的顺序是其声明的顺序,跟初始化列表中的顺序无关

所以变量的初始化顺序为m_nFir(i++),m_nSec(i++),m_nThd(i++),&m_nFor(m_nThd);

i初始值为1,所以经过初始化列表初始化以后m_nFir=1,m_nSec=2,m_nThd=3,m_nFor为m_nThd的一个引用

并且此时i的值为4,构造函数中执行语句m_nThd=i后,m_nThd=4,m_nFor是它的一个引用,自然值也为4。

输出结果m_nFir+m_nSec+m_nThd+m_nFor=1+2+4+4=11


0 0
原创粉丝点击