Зачем нам нужен чистый виртуальный деструктор в C ++? - PullRequest
144 голосов
/ 02 августа 2009

Я понимаю необходимость виртуального деструктора. Но зачем нам чистый виртуальный деструктор? В одной из статей C ++ автор упоминал, что мы используем чистый виртуальный деструктор, когда хотим сделать класс абстрактным.

Но мы можем сделать класс абстрактным, сделав любую функцию-член чисто виртуальной.

Так что мои вопросы

  1. Когда мы действительно сделаем деструктор чисто виртуальным? Кто-нибудь может привести хороший пример в реальном времени?

  2. Когда мы создаем абстрактные классы, полезно ли делать деструктор также чисто виртуальным? Если да .. то почему?

Ответы [ 12 ]

0 голосов
/ 09 сентября 2013

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

0 голосов
/ 02 августа 2009

1) Если вы хотите, чтобы производные классы выполняли очистку. Это редко.

2) Нет, но вы хотите, чтобы оно было виртуальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...