Освобождается ли память при вызове деструктора или при вызове `delete`?

Предположим, у вас есть объект класса Дурак .

class Fool
{
    int a,b,c;
    double* array ;
    //...
    ~Fool()
    {
        // destroys the array..
        delete[] array ;
    }
};


Fool *fool = new Fool() ;

Итак, Я знаю, что вы не должны , но какой-то дурак вызывает деструктор на дурак в любом случае. fool-> ~ Fool (); .

Означает ли это, что память fool освобождена (т.е. a, b, c недопустимы) или означает ли это только то, что происходит освобождение памяти в функции ~ Fool () (т.е. удаляется только массив?)

Итак, я предполагаю, что мой вопрос, является ли деструктор просто еще одной функцией , который вызывается, когда delete вызывается для объекта, или делает что-то еще?

15
задан Mechanical snail 30 August 2011 в 03:40
поделиться