Вы не вызываете такой деструктор (ну, вы можете , но обычно это не делается).
Для автоматических переменных, таких как b
,деструктор будет вызван в какой-то момент, когда переменная выходит из области видимости.Вам никогда не нужно вызывать деструктор явно.
Для объектов, размещенных в куче с new
, деструктор будет вызываться после того, как вы delete
вызовете их.В этом случае вы также не вызываете деструктор явно.
C ++ 03 состояния в 12.4 Destructors
:
Деструкторы вызываются неявно:
- для построенного объекта со статической продолжительностью хранения (3.7.1) при завершении программы;
- для построенного объекта с автоматической продолжительностью хранения (3.7.2) при выходе из блока, в котором создается объект;
- для созданного временного объекта, когда заканчивается время жизни временного объекта;
- для построенного объекта, выделенного новым выражением, с помощью выражения delete;
- в некоторых ситуациях из-за обработки исключений.
Деструкторы также могут вызываться явно.
Примечание: явные вызовы деструкторов редко нужны.Одно из применений таких вызовов - для объектов, размещенных по определенным адресам с использованием выражения new с опцией размещения.Такое использование явного размещения и уничтожения объектов может быть необходимо для использования выделенных аппаратных ресурсов и для записи средств управления памятью.
Вы , особенно , не делайте то, что выпытаясь сделать это, поскольку деструктор будет вызываться дважды, один раз явно вами и один раз неявно, когда b
выходит из области видимости.Из того же раздела стандарта:
Как только деструктор вызывается для объекта, объект больше не существует;поведение не определено, если деструктор вызывается для объекта, время жизни которого закончилось.Пример: если деструктор для автоматического объекта вызывается явным образом, а затем блок оставляется таким образом, который обычно вызывает неявное уничтожение объекта, поведение не определено.
Этот текст остается без измененийв последнем наброске C ++ 11, который у меня есть (n3225, ноябрь 2010 г.), и вряд ли он по сути изменился бы между этим и утверждением в августе 2011 г.