11 2012 档案

摘要:简单的一个类class A{intj, i;public: A(int x) : i(x), j(i) {}}如果如下定义A a(10);i,j的值分别是多少呢,都是10吗,实际上 i == 10, j 是一个随机数。为什么呢?难道不是从左到右初始化吗?修改如下 A(int) : i(j), j(x) {}结果果然都是10了。难道是从右到左?再次修改int i, j;结果 j == 10, i 是一个随机数。迷惑了?或者你猜到了,初始化的顺序与初始化列表的顺序无关,而是类中声明的顺序。被骗了吧。为什么是这样子呢,找了一下原因。析构的时候,与初始化相反的顺序进行,如果按初始化列表的顺序初始化.. 阅读全文
posted @ 2012-11-17 23:22 国超 阅读(901) 评论(0) 推荐(0) 编辑