Почему деструкторы не вызываются автоматически для объектов, созданных с помощью оператора new, когда указатель выходит C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему деструкторы не вызываются автоматически для объектов, созданных с помощью оператора new, когда указатель выходит

Сообщение Anonymous »

В своем коде я использую дополнительные скобки. Я подумал, когда следует вызывать деструктор после завершения области видимости локальной переменной, но это не работает так:

Код: Выделить всё

class TestClass {
public:
TestClass() {
printf( "TestClass()\n" );
}
~TestClass() {
printf( "~TestClass()\n" );
}
};

int main() {
int a, b, c;
{
TestClass *test = new TestClass();
}
}
Он выводит:

TestClass()

Значит, он не вызывает деструктор TestClass, но почему? Если я вызову его вручную (

Код: Выделить всё

delete test
) он вызывает деструктор, верно. Но почему в первом случае он не вызывает деструктор?

Подробнее здесь: https://stackoverflow.com/questions/180 ... th-the-new
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»