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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Даня98
 Аватар для Даня98
27 / 27 / 8
Регистрация: 13.02.2010
Сообщений: 145
15.10.2011, 12:28     Вызов деструктора #1
Есть написанный мною код:
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++ Вызов деструктора. MSVS и MinGW
C++ Явный вызов деструктора
C++ Не понятный вызов деструктора
C++ Вызов деструктора
C++ Повторный вызов деструктора
C++ Явный вызов деструктора
Вызов деструктора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
15.10.2011, 12:32     Вызов деструктора #2
запусти в консоли и появится ещё один Destructor, он вызывается при выходе из scope. Явно впринципе можно вызвать a.~Foo() но не в твоём примере
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 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     Вызов деструктора
Ответ Создать тему
Опции темы

Текущее время: 21:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru