??????????????????????????? variables with static storage????????? c++ ?????????????
?????????????
???????? C++ ???????????????????? main ???????????????????????????????е?????main ????????????????????????????????????????????????б???????????????????(seriously)?? ???????????????????????????????????????????????Σ?c++11 N3690 3.6.2)??
????static initialization: ??????????????ó?????????????г????????????? zero initialization ?? const initialization?????????????????????????????????????????????????????zero initialization ????????????? bss ?Σ?const initialization ?????????? data ??????????????????????????? c ??????????????????????????μ??
????dynamic initialization??????????????????????????????ò????????????????????int a = foo()????????????????????????????????ù????????????Щ?????????????? main ????????????????????????????????????(??????? static ????????)??
?????????????????????????????????????????е????о???????????????????????????С???????????????????????????????????????????????????????????????????????? hard code ?????????????????????????????????????????????????У???????????????????????????????
??????????????
????????????????????????????????????????????????????????????????????μ????????????????????????????????????????????c++ ???????й漲??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????α?????????п???????[1]??
??????????????????????????????????????????????????????????
????????????????????????????????????(?????????????)??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????---- ??????ɡ?
????????????
?????e???????????????Щ????????????????????????????????????????????????????????????????????????????????????????????????????????? cout?? cerr ??(???????????? log?? ??? cout ????????????????????)[2]??????????????????? cout ??????????????????? ???????????????????????
????Construct On First Use
?????????????????????????????????????????????????????????????????
????int get_global_x()
????{
????static X x;
????return x.Value();
????}
???????????????????????δ???????????????????????????????????????????????????????????????? variables with static storage?? ???????????????????????????????????????????????????? x ???????????????????????????????? x ?????? get_global_x() ??????????????????
???????????????????????????????μ??????
????int get_global_x()
????{
????static X* x = new X;
????return x->Value();
????}
??????????????????????? x ???????????????????????????????????: x ?????????????????й?????С????????????????????? x ?????????????????????????д????????????????????????????????????????????