Я много использовал списки инициализации в своих программах на C ++, но не знал, что в них можно выделить память.
Итак, вы можете сделать что-нибудь (в качестве надуманного примера) вроде этого:
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
перед использованием, безопасно ли его использовать или есть какой-то особый порядок инициализации, с которым я могу ошибиться?