🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**代码**: ~~~ #include<iostream> using namespace std; class A { private: int x1; int x2; public: A():x2(1),x1(x2++){} //初始化列表 void print() { cout<<"x1="<<x1<<endl <<"x2="<<x2<<endl; } }; int main() { A a; a.print(); return 0; } ~~~ **疑**:x1,x2最终被输出什么值呢?为什么? 解答:上机调试下会发现输出的结果是:x1是一个随机数,x2是1。为什么?因为在初始化列表中在给x1赋值为x2++时,这个x2并未初始化,也就是说x2里面什么东西也没装。也许你会问我不是在前面已经给x2赋值了吗,没错,但是有一个问题你忽略了,那就是初始化列表的赋值顺序是依照x1和x2的声明顺序的顺序来初始化的,也就是说在代码中,程序是先给x1赋值为x2++(此时x2并未初始化),再给x2赋值为1。还有初始化列表里的赋值,是在变量被声明时进行的,所以多使用初始化列表是可以提升程序效率的。 !!代码疑云系列由本人在[天天唯C论坛](http://www.tiantianvc.com/)下首发 ======= welcome to my HomePage([*http://blog.csdn.net/zhanxinhang*](http://blog.csdn.net/zhanxinhang)) to have a communication =======