Порядок уничтожения статических объектов в 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

2022-11-06T18:14:58+00:00
Вопросы с похожей тематикой, как у вопроса:

Порядок уничтожения статических объектов в C++