我剛剛開始結合我對C++類和動態數組的知識。我被告知「任何時候我使用新的操作符」我應該刪除。我也知道析構函數是如何工作的,所以我覺得這個代碼是正確的:我在這裏使用的是否正確刪除?
的main.cpp
...
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;
}
...
我填補我PicLib與Pic
類,包含更多動態數組。 Pic
的析構函數以與上面相同的方式刪除它們。我認爲delete [] database
正確擺脫所有這些類。
那麼刪除 main.cpp是必要的嗎?這裏一切都看起來很豪華嗎?
爲什麼分別分配數據庫然後刪除它?如果它始終在課堂中,爲什麼不把它作爲成員Pic m_database [MAX_DATABASE]; – KPexEA 2010-03-03 18:07:49