Когда инициализируются статические поля класса? Что будет если при инициализации статического поля сгенерируется исключение?
Данный код сработает до запуска main()? Что будет если при инициализации m_filed произойдет исключение? Когда вызовется деструктор m_field?
class Example {
private:
static int m_field;
}
int Example::m_field = 0;
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Сколько времени нужно, чтоб набросать вот такой тестовый код
struct Info
{
Info() { cout << "ctor Info\n"; }
~Info() { cout << "dtor Info\n"; }
};
struct Test
{
static Info ii;
};
Info Test::ii;
int main(int argc, char * argv[])
{
cout << "main()\n";
}
и получить ответы почти на все ваши вопросы? :) Вы не верите разработчикам компиляторов? :)
Ну, а в ответ на все неперехваченные исключения вызывается функция terminate().
Чтоб убедиться — исправьте код выше так:
Info() {
set_terminate([](){cout << "Unhandled exception\n" << flush; });
cout << "ctor Info\n"; throw 0;
}