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

Не запускается деконструктор. Где ошибка? - C++

Восстановить пароль Регистрация
 
bohdan_si
12 / 12 / 2
Регистрация: 03.10.2012
Сообщений: 83
25.01.2013, 01:12     Не запускается деконструктор. Где ошибка? #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
25
26
27
28
29
30
31
32
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
class Sort{
      public:
            int x[10];
            int max;
            Sort();
            ~Sort();
};      
Sort::Sort(){
            int i;
            max=x[0];
            for(i=0;i<10;i++){
            cin >> x[i];
            if(max<x[i])
               max=x[i];
                }
}       
Sort::~Sort(){
           cout << max ;
           cout << "GOOD" ;
}
 
int main(){
    
    Sort a;
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 01:12     Не запускается деконструктор. Где ошибка?
Посмотрите здесь:

C++ Где ошибка??
C++ не запускается программа,в чем ошибка
Где то ошибка C++
C++ Где ошибка? С++
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.01.2013, 01:17     Не запускается деконструктор. Где ошибка? #2
С чего Вы взяли, что он не "запускается"?
bohdan_si
12 / 12 / 2
Регистрация: 03.10.2012
Сообщений: 83
25.01.2013, 01:18  [ТС]     Не запускается деконструктор. Где ошибка? #3
у меня не выводит максимальное значение!
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.01.2013, 01:19     Не запускается деконструктор. Где ошибка? #4
Все вроде вызывается. Только вот в конструкторе переменной max присваивается значение x[0], которое еще не инициализировано (содержит мусор).
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.01.2013, 01:19     Не запускается деконструктор. Где ошибка? #5
Цитата Сообщение от bohdan_si Посмотреть сообщение
у меня не выводит максимальное значение!
Он будет вызван при выходе из функции, то есть при return;
Можете ограничить область видимости переменной a, чтобы увидеть результат:
C++
1
2
3
4
5
6
int main(){
    
    {Sort a;}
    system("PAUSE");
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.01.2013, 01:19     Не запускается деконструктор. Где ошибка? #6
bohdan_si, наверное оно выводит мусор, т.к. в момент
C++
1
max=x[0];
в x[0] может лежать что угодно.
Организация класса у вас ужас, ввод в конструкторе вообще не айс.
bohdan_si
12 / 12 / 2
Регистрация: 03.10.2012
Сообщений: 83
25.01.2013, 01:20  [ТС]     Не запускается деконструктор. Где ошибка? #7
можно так прописать?
Цитата Сообщение от bohdan_si Посмотреть сообщение
int i;
C++
1
2
3
4
5
6
7
x[10]={0};
 max=x[0];
for(i=0;i<10;i++){
cin >> x[i];
 if(max<x[i])
max=x[i];
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.01.2013, 01:24     Не запускается деконструктор. Где ошибка? #8
C++
1
2
3
4
5
6
7
8
9
10
Sort::Sort(){
            int i;
                std::cin>>x[0];
            max=x[0];
            for(i=1;i<10;i++){
            cin >> x[i];
            if(max<x[i])
               max=x[i];
                }
}
bohdan_si
12 / 12 / 2
Регистрация: 03.10.2012
Сообщений: 83
25.01.2013, 01:27  [ТС]     Не запускается деконструктор. Где ошибка? #9
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
Sort::Sort(){
            int i;
                std::cin>>x[0];
            max=x[0];
            for(i=1;i<10;i++){
            cin >> x[i];
            if(max<x[i])
               max=x[i];
                }
}
спасибо!
а для чего std:: ???
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.01.2013, 01:31     Не запускается деконструктор. Где ошибка? #10
Цитата Сообщение от bohdan_si Посмотреть сообщение
спасибо!
а для чего std:: ???
пространство имен std.
Но если уж решили использовать
C++
1
using namespace std;
то уберите std::
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
25.01.2013, 02:16     Не запускается деконструктор. Где ошибка? #11
Если так хочешь увидеть работу деструктора то создавай объект динамически или заключи его в функцию например, те
C++
1
2
3
4
5
6
7
8
9
10
11
void test()
{
   Sort a;
}
 
int main(){
    
    test();
    system("PAUSE");
    return 0;
}
В этом случае объект создаётся в функции и там же в конце уничтожается так что и вывод деструктора ты увидишь.
Croessmah
25.01.2013, 02:58
  #12

Не по теме:

Цитата Сообщение от Gepar Посмотреть сообщение
В этом случае объект создаётся в функции и там же в конце уничтожается так что и вывод деструктора ты увидишь.
C++
1
{Sort a;}//Тоже вариант

go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.01.2013, 13:16     Не запускается деконструктор. Где ошибка? #13
Цитата Сообщение от bohdan_si Посмотреть сообщение
Не запускается деконструктор. Где ошыбка?
Деструктор не запуститься если только убить процесс.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.01.2013, 16:28     Не запускается деконструктор. Где ошибка? #14
Цитата Сообщение от go Посмотреть сообщение
Деструктор не запуститься если только убить процесс.
А так же, если объект не достроен. Как пример:
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
25
26
#include <iostream>
class A{
public:
    A(){
        std::cout<<"\tConstructor begin"<<std::endl;
        int * p = new int[1000];
        while (p) p=new int[100000];
        std::cout<<"\tConstructor end"<<std::endl;
    }
    ~A(){
        std::cout<<"\tDestructor"<<std::endl;
    }
};
 
void foo(){
    try{
        A a;
    }catch(...){
        std::cout<<"Error"<<std::endl;
    }
}
 
int main(){
    foo();
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.01.2013, 18:57     Не запускается деконструктор. Где ошибка? #15
Croessmah, исключения в конструкторе. Ну-ну... Удачи Вам с ними!
Croessmah
25.01.2013, 19:13
  #16

Не по теме:

Цитата Сообщение от go Посмотреть сообщение
Ну-ну... Удачи Вам с ними!
Написал же что для примера

diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.01.2013, 19:14     Не запускается деконструктор. Где ошибка? #17
Ну или если его не запустить
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
struct C
{
  C()  { std::cout << "C() \n"; }
  ~C() { std::cout << "~C()\n"; }
};
 
int main()
{
   new C();
}
http://liveworkspace.org/code/wcEtX
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 13:40     Не запускается деконструктор. Где ошибка?
Еще ссылки по теме:

C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
C++ Где ошибка?
Где ошибка? C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.01.2013, 13:40     Не запускается деконструктор. Где ошибка? #18
Цитата Сообщение от go Посмотреть сообщение
исключения в конструкторе. Ну-ну... Удачи Вам с ними!
Если в конструкторе всё захватывается по RAII, то в большинстве случаев исключения допустимы. Тут вечный вопрос RAII+exceptions или Exception-safe constructor+init method. Во втором случае мы уходим от сути конструкторов и возвращаемся к сишному принципу "выделили память, потом инициализировали".
Yandex
Объявления
29.01.2013, 13:40     Не запускается деконструктор. Где ошибка?
Ответ Создать тему
Опции темы

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