Просто из любопытства я попытался сделать что-то вроде приведенного ниже примера, чтобы увидеть, выдает ли мне компилятор предупреждение или около того вместо вызова бесконечного цикла, который заканчивается переполнением стека. Я подумал, может быть, есть другое поведение, чем просто вызов обычных функций или методов. Но это не так. Есть ли для этого специальное объяснение или это просто обрабатывается как обычные вызовы функций, поскольку я явно вызываю деструктор базового класса с помощью оператора this
?
Пример:
class A {
virtual ~A();
};
class B : A {
virtual ~B() { this->~A(); }
};
virtual void ~A();
- это не должно компилироваться, деструкторы ничего не возвращают, а обычное имя метода не может содержать тильду. - person yeputons   schedule 22.02.2017~A()
(поскольку существует подразумеваемый вызов после выхода из тела~B()
) - person M.M   schedule 22.02.2017