В конструкторе по умолчанию выделение массива char должно включать его желаемый размер, например,
this->name = new char[32];
Обратите внимание, что в этот размер входит завершающий символ 0, поэтому эффективная длина имен, которые вы можете сохранить в этом массиве, равна 31.
В параметризованном конструкторе вы можете просто назначить заданные параметры членам вашего класса.
В деструкторе вам необходимо освободить динамически распределенные ресурсы - обязательно используйте delete[]
только тогда, когда освобождает память, выделенную с помощью new[]
:
~Person(){
std::cout << "Destroying resources" << std::endl;
delete[] name;
delete age;
}
Обновление: Я пропустил это: если вы хотите выделить age
динамически, вы должны объявить его как int* age
.
Я предполагаю, что цель этого упражнения - практиковать динамическое распределение / освобождение; в этом контексте это нормально. Однако, в общем случае, не рекомендуется динамически распределять int
с, и вместо char*
вы почти всегда должны использовать std::string
, который автоматически и безопасно обрабатывает выделение памяти.