Порядок уничтожения статических объектов в C++
Другие ответы на этот вопрос static настаивают на том, что это destruction невозможно. И они правы, согласно destruction спецификации, но есть трюк, который c++ позволит вам это сделать.
Создайте c++ только единственную статическую переменную cxx класса или структуры, которая static-vs-non-static содержит все остальные вещи, которые c++ вы обычно создаете статическими c++ переменными, например:
class StaticVariables {
public:
StaticVariables(): pvar1(new Var1Type), pvar2(new Var2Type) { };
~StaticVariables();
Var1Type *pvar1;
Var2Type *pvar2;
};
static StaticVariables svars;
Вы cpp можете создавать переменные static в любом порядке, который cxx вам нужен, и, что более важно, уничтожать их c++ в любом нужном вам порядке destruction в конструкторе и деструкторе static-vs-non-static для StaticVariables
. Чтобы сделать это полностью cpp прозрачным, вы также можете cxx создать статические ссылки destruction на переменные, например:
static Var1Type &var1(*svars.var1);
Вуаля destruction - полный контроль. :-) Тем c++ не менее, это лишняя работа cxx и вообще ненужная. Но когда static это необходимо, очень полезно знать c++ об этом.
c++
static
destruction
Порядок уничтожения статических объектов в C++
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.