Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Даня98
28 / 28 / 8
Регистрация: 13.02.2010
Сообщений: 145
#1

Вызов деструктора - C++

15.10.2011, 12:28. Просмотров 3626. Ответов 2
Метки нет (Все метки)

Есть написанный мною код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
class Foo
{
private:
    int *key;
public:
    Foo (const int a=0) { key = new int (a); std:: cout << "Constructor" << std::endl;}
    ~Foo () {delete key; std:: cout << "Destructor" << std::endl;} 
};
 
 
void set ()
{
    Foo a;
}
 
int main(int a1=1)
{
    Foo a;
    set();
    system ("pause");
    return 0;
}
В выводе:"Constructor Contructor Destructor". Получается 1 деструктор не был вызван (по крайней мере перед system("pause"). Но как явно вызвать деструктор к классу Foo? (когда пишу delete выдает ошибку, что нельзя преобразовать Foo к void, а дектруктор ведь не принимает никаких значений.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 12:28     Вызов деструктора
Посмотрите здесь:

Вызов деструктора - C++
При ручном вызове деструктора, освобождается ли память*

Вызов деструктора - C++
Вызывается ли деструктор объекта при завершении программы? а при аварийном завершении? А если снять процесс приложения диспетчером?

Вызов деструктора - C++
Доброго вам времени суток. Проблема в том, что деструктор не выводит сообщение без этой строки. s1.~Shave(); И я не уверен, что так...

Явный вызов деструктора - C++
Есть класс Person, с полями string,string,long. Исходные данные хранятся в файле. Нужно сделать вектор объектов этого класса. ...

Двойной вызов деструктора - C++
Здравствуйте, уважаемые. Вот столкнулся с такой проблемой... CharRow - это класс, который содержит указатель на строку... ...

Не понятный вызов деструктора - C++
Здравствуйте. Ситуация такая, есть класс MyClass к примеру, и при таком коде: //разные инклюды MyClass var; int WinMain(...) { ...

Явный вызов деструктора - C++
Добрый вечер всем! Я раньше читал статью о деструкторах, и там говорилось что можно явно вызвать деструктор. Статью я прочитал и забыл) И...

Повторный вызов деструктора - C++
{ bar b; b.~bar(); } В данном примере деструктор bar вызовется дважды. Как у уже удаленного объекта может вызываться...

Вызов деструктора функцией-членом - C++
class c { public: c(){} ~c(){} void f(c* p){delete p;} }; main() {

Автоматический вызов деструктора компилятором - C++
Хэлп, господа! Ситуация такая: имеется объект класса P, в нем парочка указателей на объекты класса С. В конструкторе P вызываются...

Вызов деструктора. MSVS и MinGW - C++
Всем доброго дня. Вопрос в следующем. К примеру имеем код: //#include &quot;stdafx.h&quot; //uncomment in ms visual studio ...

Вызов деструктора для копии - C++
вопрос в комментариях #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; #include &lt;ctime&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
15.10.2011, 12:32     Вызов деструктора #2
запусти в консоли и появится ещё один Destructor, он вызывается при выходе из scope. Явно впринципе можно вызвать a.~Foo() но не в твоём примере
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.10.2011, 12:47     Вызов деструктора #3
Даня98, http://liveworkspace.org/code/8df28d...0fc57a42e0248c все четко работает. Не надо ничего вызывать явно
Yandex
Объявления
15.10.2011, 12:47     Вызов деструктора
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru