Я только что начал комбинировать свои знания классов 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