Когда происходит инициализация статической переменной-члена

0

У меня есть код,

// CFoo.h
class CFoo
{
public:
   CFoo();
   ~CFoo();
   static const std::string mStr;
};

// CFoo.cpp
const std::string mStr = "MyFoo";

CFoo::CFoo()
{
}

CFoo::~CFoo()
{
}

Когда будет инициализирован мой статический mStr? Когда мое приложение выполняется? Или при создании экземпляра CFoo?

Благодарю!

  • 2
    Некоторое время перед вызовом main() .
  • 2
    Кроме того, есть много вещей на эту тему, если вы ищете.
Теги:

1 ответ

2

Реализация определена.

Единственное, что гарантировано, это то, что он будет инициализирован к тому времени, когда ваше приложение сначала войдет в блок перевода, который его определяет.

  • 0
    Кроме того, для объектов, определенных в том же TU, порядок инициализаций гарантирован, это порядок их определений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню