C++ - 什么时候非指针类成员被破坏?

Ext*_*kun 3 c++ destructor

假设我有这个代码......

class GraphFactory : public QObject
{
private:
    QMap<QString, IGraphCreator*> factory_;

public:
    virtual ~GraphFactory();
};

GraphFactory::~GraphFactory()
{
    // Free up the graph creators
    QMap<QString, IGraphCreator*>::iterator itr;
    for (itr = factory_.begin(); itr != factory_.end(); itr++)
    {
        IGraphCreator * creator = itr.value();
        delete creator;
        creator = NULL;
    }

}
Run Code Online (Sandbox Code Playgroud)

QMap工厂何时被销毁?在调用析构函数之前,还是在析构函数期间?(我知道当GraphFactory的一个实例超出范围时会调用析构函数.但是什么时候非指针成员被销毁?)

编辑:当到达析构函数时,我得到了factory_ map的无效值.断点显示该值不会篡改QMap中存储的值.

Ark*_*nez 11

在析构函数代码执行它将被破坏

我们的想法是在析构函数代码中访问您的成员,以便它们在执行后被销毁.