Да, если вы создаете детей с:
a_children = new Myclass[sz_numChildren];
удаление родителя в свою очередь удалит всех потомков.
Однако это не будет очень гибким по нескольким причинам.
- Дочерние элементы должны быть созданы одновременно в непрерывном массиве. Вы не сможете реализовать такую функцию, как
addChild()
очень легко.
- Вы не сможете наследовать от MyClass и хранить производные типы как дочерние, поскольку они не сохраняются как указатели.
Я бы порекомендовал использовать вектор указателей на объекты MyClass для хранения дочерних элементов:
std::vector<MyClass*> a_children;
Тогда вы можете создавать детей по мере необходимости:
a_children.push_back(new MyClass(parent));
и удалите всех детей с помощью:
for(int i=0; i<a_children.size(); i++)
delete a_children[i];
Фактический вектор указателей будет уничтожен автоматически.