В какой момент будет удалено статическое поле класса, если деструктор класса виртуальный?
class gameObj : public basicObj
{
public:
gameObj(){
arr.push_back(this);
}
virtual ~gameObj()
{}
protected:
static vector<basicObj *> arr;
}
И ещё один вопрос. Если удалить базовый класс (имеющий виртуальный деструктор), удалятся ли поля класса-потомка?
Если статическое поле класса было создано (сконструировано), то удаляться (деструктироваться) оно будет при завершении программы. Относительный порядок удаления объектов со статическим классом хранения является обратным по отношению к относительному порядку их создания.
В каком порядке это поле будет создано (и будет ли создано вообще) зависит том числе и от расположением определения этого поля в коде программы. Определение вы в своем примере не привели.
К деструктору класса все это не имеет никакого отношения.
Виртуальность деструктора не при чем. Удаление объектов класса тоже не при чем.
Статические поля (нешаблонных) классов всегда создаются при запуске программы и (в обратном порядке) удаляются при завершении программы.
Продвижение своими сайтами как стратегия роста и независимости