如果类析构函数是虚拟的,什么时候会删除静态类字段?
class gameObj : public basicObj
{
public:
gameObj(){
arr.push_back(this);
}
virtual ~gameObj()
{}
protected:
static vector<basicObj *> arr;
}
还有一个问题。如果删除基类(具有虚拟析构函数),是否会删除子类的字段?
析构函数的虚拟性与它无关。删除类对象也不应该受到责备。
(非模板)类的静态字段总是在程序启动时创建,并(以相反的顺序)在程序结束时删除。
如果一个静态类字段已经被创建(构造),那么它将在程序结束时被删除(销毁)。使用静态存储类删除对象的相对顺序与创建对象的相对顺序相反。
该字段的创建顺序(以及是否会创建)取决于程序代码中该字段定义的位置等。您没有在示例中提供定义。
所有这些都与类析构函数无关。