C ++ виртуальные деструкторы - PullRequest
3 голосов
/ 14 июня 2010

При создании классов-прототипов я выкладываю деструктор так:

virtual ~MyClass();

При финализации класса в библиотеке я заметил, что не могу добавить «виртуальный».Это нормально и учитывается ли виртуально или я что-то не так делаю?

Например;когда я пытаюсь сделать это, я получаю сообщение об ошибке компилятора:

virtual MyClass::~MyClass() { }

Вместо этого это работает:

MyClass::~MyClass() { }

У меня вопрос, поскольку мне не нужно включать virtual вокончательная запись кода деструктора Деструктор все еще ведет себя как виртуальный деструктор (поскольку он является виртуальным в качестве прототипа)?

Ответы [ 2 ]

15 голосов
/ 14 июня 2010

Ключевое слово virtual используется только как часть объявления функции-члена внутри определения класса.

Если функция-член определена вне определения класса, ключевое слово virtual там не помещается.

4 голосов
/ 14 июня 2010

Виртуальное ключевое слово может использоваться только в объявлениях функций в объявлении класса (обычно в заголовочном файле), но не в определениях в исходном файле.Это верно для всех функций, а не только для деструкторов.

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