C++ static data members initialization

2020-04-21 04:03发布

问题:

1) Is it true that static data members of classes always get initialized before main() called?

2) Is it true that "static initialization order fiasco" can happen if static data member of class initialization code uses global static variable of other translation unit?

Where can I read more about it? I couldn't find answer in 2003 standard of C++.

Thanks a lot.

回答1:

1) Is it true that static data members of classes always get initialized before main() called?

yes they would always be initialized before program starts executing.

2) Is it true that "static initialization order fiasco" can happen if static data member of class initialization code uses global static variable of other translation unit?

Yes, along with this it also happens for every other thing which is initialized before main() execution.



回答2:

Yes to both answers.

see https://isocpp.org/wiki/faq/ctors#static-init-order for a good description of it.