Что делает неявно определенный деструктор - PullRequest
0 голосов
/ 11 декабря 2018

Что делает неявно определенный деструктор?Это просто пустая функция, которая определяется компилятором?

struct Foo
{
  int i;
};

struct Bar
{
  int i;
  ~Bar()
  { 
    // empty...
  }
};

Является ли уничтожение Фу идентичным Бару?Или неявный деструктор делает что-то внутри тела, сгенерированного компилятором?

1 Ответ

0 голосов
/ 11 декабря 2018

Что делает неявно определенный деструктор?

Он будет таким же, как явно определенный деструктор с пустым телом.По сути, он уничтожает все подобъекты и больше ничего не делает.

Это просто пустая функция, определенная компилятором?

На практике может даже не потребоваться пустая функция.Но может быть полезно думать, что это происходит, когда мы думаем в терминах абстрактной машины.

Или неявный деструктор что-то делает внутри тела, сгенерированного компилятором?

Зависит от класса.В случае Foo деструктору ничего не нужно делать.

...