我刚刚开始结合我对 C++ 类和动态数组的了解。我得到的建议是“任何时候我使用新的运算符”我都应该删除。我也知道析构函数是如何工作的,所以我认为这段代码是正确的:
主文件
...
int main()
{
PicLib *lib = new PicLib;
beginStorage(lib);
return 0;
}
void beginStorage(PicLib *lib)
{
...
if (command != 'q')
{
//let's assume I add a whole bunch
//of stuff to PicLib and have some fun here
beginStorage(lib);
}
else
{
delete lib;
lib = NULL;
cout << "Ciao" << endl;
}
}
PicLib.cpp
...
PicLib::PicLib()
{
database = new Pic[MAX_DATABASE];
num_pics = 0;
}
PicLib::~PicLib()
{
delete[] database;
database = NULL;
num_pics = 0;
}
...
Pic
我用一个包含更多动态数组的类填充我的 PicLib 。Pic
的析构函数以与上面相同的方式删除它们。我认为这delete [] database
可以正确地摆脱所有这些课程。
那么main.cpp中的删除是否必要?这里的一切看起来都很棒吗?