构造函数的初始化列表,是严格的执行顺序么?解决办法
构造函数的初始化列表,是严格的执行顺序么?
初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出现的顺序,初始化的?
下面这个程序可以打印3,3,是我想要的结果。但是我还是想肯定一下,C++标准里面有没有这样规定?
------解决方案--------------------
我记得是按照在类的声明里从上到下的顺序初始化,和构造函数里写的顺序无关。
------解决方案--------------------
声明的顺序
------解决方案--------------------
初始化顺序与在类中声明的顺序有关.
------解决方案--------------------
初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出现的顺序,初始化的?
下面这个程序可以打印3,3,是我想要的结果。但是我还是想肯定一下,C++标准里面有没有这样规定?
- C/C++ code
struct s{ int *pi; s(int* p):pi(p){printf("%d\n",pi[2]);} }; struct s2{ s m_s; int *pj; s2(int* p):m_s(p),pj(m_s.pi){ printf("%d\n",pj[2]); } }; int main(void) { int ibuf[]={1,2,3}; s2 obj(ibuf); return 0; }
------解决方案--------------------
我记得是按照在类的声明里从上到下的顺序初始化,和构造函数里写的顺序无关。
------解决方案--------------------
声明的顺序
------解决方案--------------------
初始化顺序与在类中声明的顺序有关.
------解决方案--------------------
- C/C++ code
struct s{ int *pi; s(int* p):pi(p){printf("%d\n",pi[2]);} }; struct s2{ s m_s; int *pj; s2(int* p):m_s(p),pj(m_s.pi){ printf("%d\n",pj[2]); } };
------解决方案--------------------
------解决方案--------------------
可以结贴了
------解决方案--------------------