static initialization order fiasco

前端 未结 4 1159
长发绾君心
长发绾君心 2020-11-22 12:20

I was reading about SIOF from a book and it gave an example :

//file1.cpp
extern int y;
int x=y+1;

//file2.cpp
extern int x;
int y=x+1;  
<
4条回答
  •  一整个雨季
    2020-11-22 13:08

    The initialization steps are given in 3.6.2 "Initialization of non-local objects" of the C++ standard:

    Step 1: x and y are zero-initialized before any other initialization takes place.

    Step 2: x or y is dynamically initialized - which one is unspecified by the standard. That variable will get the value 1 since the other variable will have been zero-initialized.

    Step 3: the other variable will be dynamically initialized, getting the value 2.

提交回复
热议问题