C ++: При удалении динамически размещенного класса удаляются ли частные члены, которых нет в куче?

0

Например, скажем, у вас есть:

Class Test
{
     public:
     Test();
     private:
     int x = 0;
     int y = 3;
}

Вы объявляете экземпляр теста, используя что-то вроде

Test * RRR = new Test();

Скажите где-нибудь вниз по линии, которую вы вводите

delete RRR;

Означает ли это также, что память x и y занята?

Теги:
memory-management

1 ответ

1
Лучший ответ

короткий ответ - да, но, строго говоря, x и y не удаляются. Память, которую они будут освобождены, потому что они являются членами данных структуры.

Даже вы не определяете деструктор, компилятор будет синтезировать деструктор по умолчанию для вас, который освободит память, которую занимает структура.

  • 0
    Даже если у самого класса нет деконструктора?
  • 0
    @RemyLeBeau Вы имеете в виду деструктор, да, потому что, поскольку вы удалили RRR , память для него будет стерта, несмотря на наличие деструктора или нет.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню