Есть ли проблемы с выделением памяти в списках инициализации конструкторов?

Я много использовал списки инициализации в своих программах на 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 перед использованием, безопасно ли его использовать или есть какой-то особый порядок инициализации, с которым я могу ошибиться?

20
задан Firedragon 30 January 2012 в 13:23
поделиться