我不想使用智能指针。
她是我的密码。
CCOLFile *pCOLFile = CCOLManager::getInstance()->parseFile(strCOLPath); // returns instance of CCOLFile
// ...
pCOLFile->unload(); // hoping to comment this out, and use destructor instead.
delete pCOLFile;
struct CCOLFile
{
std::string m_strFilePath;
std::vector<CCOLEntry*> m_vecEntries;
};
void CCOLFile::unload(void)
{
for (auto pCOLEntry : m_vecEntries)
{
delete pCOLEntry;
}
m_vecEntries.clear();
}
在c ++中,注释我对CCOLFile :: unload的调用,然后将代码从CCOLFile :: unload方法移至CCOLFile析构函数是否安全?
最佳答案
是
析构函数的全部目的是允许您在释放对象内存之前清理对象。因此,所有成员都可以正常访问,就像在常规方法中一样。
只是要警惕不要从析构函数中引发异常,并要小心在所有情况下正确使用内存语义(副本构造函数,赋值等),以防止泄漏或释放两次。