Я очень часто использовал списки инициализации в своих программах на С++, но не знал, что вы можете выделить в них память.
Итак, вы можете что-то сделать (как надуманный пример) следующим образом:
class Test
{
private:
int* i;
int* j;
int count;
int* k;
public:
Test(void) : i(new int), j(new int[10]), count(10), k(new int[count])
{
}
~Test(void)
{
delete i;
delete [] j;
delete [] k;
}
};
Есть ли проблемы в распределении памяти таким образом? Что касается порядка инициализации здесь, безопасно ли инициализировать параметр одним инициализированным в том же списке? то есть, когда я выделяю count
, прежде чем использовать его, безопасно ли использовать или есть какой-то специальный порядок инициализации, который я мог бы испортить?