读书人

构造函数的初始化列表,是严格的执行顺

发布时间: 2012-05-05 17:21:10 作者: rapoo

构造函数的初始化列表,是严格的执行顺序么?
初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出现的顺序,初始化的?
下面这个程序可以打印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]);    }};
[解决办法]
探讨
初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出现的顺序,初始化的?
下面这个程序可以打印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;
……

[解决办法]
可以结贴了
[解决办法]
探讨
初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出现的顺序,初始化的?
下面这个程序可以打印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;
……

读书人网 >C++

热点推荐