Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.10.2011, 12:28. Просмотров 3979. Ответов 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, а дектруктор ведь не принимает никаких значений.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 12:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вызов деструктора (C++):

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

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

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

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

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

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

2
LosAngeles
Заблокирован
15.10.2011, 12:32 #2
запусти в консоли и появится ещё один Destructor, он вызывается при выходе из scope. Явно впринципе можно вызвать a.~Foo() но не в твоём примере
1
sandye51
программист С++
687 / 592 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.10.2011, 12:47 #3
Даня98, http://liveworkspace.org/code/8df28ddef6347bdcf70fc57a42e0248c все четко работает. Не надо ничего вызывать явно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 12:47
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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