首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数的初始化列表,是严格的执行顺序么?解决办法

2012-05-05 
构造函数的初始化列表,是严格的执行顺序么?初始化列表当中的元素,是否是严格的按照他们在初始化列表当中出

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

热点排行