0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 23
1

Не работает деструктор

09.02.2015, 19:59. Показов 2703. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <conio.h>
 
using std::cout;
#pragma hdrstop
#pragma argsused
class vect
{
public:
    vect(int = 0, int = 0, int = 0, int = 0, int = 0); //Конструктор
    
    vect operator+(const vect &) const;   //Сложение
    vect operator-(const vect &) const;//Вычитание
    vect operator*(const vect &); //Умножение вектора на вектор
    vect operator*(const int &); //Умножение скаляра на вектор
    void print() const;//Печать
private:
    int a, b, c, d, e;
};
//Конструктор:
vect::vect(int a1, int b1, int c1, int d1, int e1)
{
    a = a1;
    b = b1;
    c = c1;
    d = d1;
    e = e1;
 
}
 
~ vect::vect();
{
    cout << "Тут сработал деструктор" << endl;
 
}
 
//Перегруженная операция сложения:
vect vect::operator+(const vect &operand2) const
{
    vect sum;
    sum.a = a + operand2.a;
    sum.b = b + operand2.b;
    sum.c = c + operand2.c;
    sum.d = d + operand2.d;
    sum.e = e + operand2.e;
    return sum;
}
//Перегруженная операция вычитания:
vect vect::operator-(const vect &operand2) const
{
    vect diff;
    diff.a = a - operand2.a;
    diff.b = b - operand2.b;
    diff.c = c - operand2.c;
    diff.d = d - operand2.d;
    diff.e = e - operand2.e;
    return diff;
}
//Перегруженная операция умножения:
vect vect::operator*(const vect &operand2)
{
    vect proizv;
    proizv.a = a * operand2.a;
    proizv.b = b * operand2.b;
    proizv.c = c * operand2.c;
    proizv.d = d * operand2.d;
    proizv.e = e * operand2.e;
    return proizv;
}
//Перегруженная операция умножения:
vect vect::operator*(const int &operand2)
{
    vect proizv;
    proizv.a = a * operand2;
    proizv.b = b * operand2;
    proizv.c = c * operand2;
    proizv.d = d * operand2;
    proizv.e = e * operand2;
    return proizv;
 
}
//Печать объекта в виде (a,b,c,d,e)
void vect::print() const
{
    cout << '(' << a << ", " << b << ", " << c << ", " << d << ", " << e << ')';
}
 
 
 
int main(int argc, char* argv[])
{
    vect x(5, 6, 7, 8, 9), y(4, 3, 2, 1, 7);
    vect z;
    int scl = 8;
    cout << "\n Vector 1:   ";
    x.print();
    cout << "\n Vector 2:   ";
    y.print();
    z = x + y;
    cout << "\n Slozhenie:   ";
    z.print();
    z = x - y;
    cout << "\n Vichitanie:  ";
    z.print();
    z = x * y;
    cout << "\n Vector*Vector:   ";
    z.print();
    z = x * scl;
    cout << "\n Scalar1:   ";
    z.print();
    z = y * scl;
    cout << "\n Scalar1:   ";
    z.print();
    getch();
    return 0;
 
}
Отказывается работать, в чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2015, 19:59
Ответы с готовыми решениями:

не работает деструктор
это моя первая программа..я еще не особо разобралась..обьясните почему не работает деструктор и как...

Не работает деструктор C++
Работаю в среде DEVc++ #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class...

Не работает деструктор
Простой вопрос, скорее всего связано с 2019 студией. Может кто сталкивался с таким? Всё...

Не работает деструктор
Выписал пример из самоучителя, но выяснилось что не работает деструктор. В чем проблема? #include...

6
Эксперт PHP
4898 / 3898 / 1615
Регистрация: 24.04.2014
Сообщений: 11,403
09.02.2015, 20:01 2
ManiaС_VB_PAS,
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
int main(int argc, char* argv[])
{
    {
    vect x(5, 6, 7, 8, 9), y(4, 3, 2, 1, 7);
    vect z;
    int scl = 8;
    cout << "\n Vector 1:   ";
    x.print();
    cout << "\n Vector 2:   ";
    y.print();
    z = x + y;
    cout << "\n Slozhenie:   ";
    z.print();
    z = x - y;
    cout << "\n Vichitanie:  ";
    z.print();
    z = x * y;
    cout << "\n Vector*Vector:   ";
    z.print();
    z = x * scl;
    cout << "\n Scalar1:   ";
    z.print();
    z = y * scl;
    cout << "\n Scalar1:   ";
    z.print();
    }
    getch();
    return 0;
 
}
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 23
09.02.2015, 20:03  [ТС] 3
что это значит?)
0
Модератор
Эксперт С++
13334 / 10635 / 6354
Регистрация: 18.12.2011
Сообщений: 28,399
09.02.2015, 20:08 4
C++
1
2
3
4
5
vect::~vect()
{
    cout << "Destructor" << endl;
 
}
И добавьте в объявление класса
C++
1
~vect();
Да, еще
C++
1
using std::endl;
1
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
09.02.2015, 20:15 5
ManiaС_VB_PAS, если объект создан в функции мейн, у тебя деструктор срабатывает после завершения работы всей программы, в том числе после вызова getch
пока программа показывает тебе экран консоли и ждёт нажатия клавиши деструктор ещё не сработал - он сработает после.
Запусти программу из командной строки и увидишь. Ну или не создавай объект прямо в мейн, а ограничь время жизни переменной {скобками} как у Jewbacabra.
2
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 23
09.02.2015, 20:17  [ТС] 6
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <iostream>
#include <conio.h>
 
using std::cout;
#pragma hdrstop
#pragma argsused
using std::endl;
class vect
    ~vect();
{
public:
    vect(int = 0, int = 0, int = 0, int = 0, int = 0); //Конструктор
    
    vect operator+(const vect &) const;   //Сложение
    vect operator-(const vect &) const;//Вычитание
    vect operator*(const vect &); //Умножение вектора на вектор
    vect operator*(const int &); //Умножение скаляра на вектор
    void print() const;//Печать
private:
    int a, b, c, d, e;
};
//Конструктор:
vect::vect(int a1, int b1, int c1, int d1, int e1)
{
    a = a1;
    b = b1;
    c = c1;
    d = d1;
    e = e1;
 
}
 
vect::~vect()
{
    cout << "Destructor" << endl;
 
}
 
//Перегруженная операция сложения:
vect vect::operator+(const vect &operand2) const
{
    vect sum;
    sum.a = a + operand2.a;
    sum.b = b + operand2.b;
    sum.c = c + operand2.c;
    sum.d = d + operand2.d;
    sum.e = e + operand2.e;
    return sum;
}
//Перегруженная операция вычитания:
vect vect::operator-(const vect &operand2) const
{
    vect diff;
    diff.a = a - operand2.a;
    diff.b = b - operand2.b;
    diff.c = c - operand2.c;
    diff.d = d - operand2.d;
    diff.e = e - operand2.e;
    return diff;
}
//Перегруженная операция умножения:
vect vect::operator*(const vect &operand2)
{
    vect proizv;
    proizv.a = a * operand2.a;
    proizv.b = b * operand2.b;
    proizv.c = c * operand2.c;
    proizv.d = d * operand2.d;
    proizv.e = e * operand2.e;
    return proizv;
}
//Перегруженная операция умножения:
vect vect::operator*(const int &operand2)
{
    vect proizv;
    proizv.a = a * operand2;
    proizv.b = b * operand2;
    proizv.c = c * operand2;
    proizv.d = d * operand2;
    proizv.e = e * operand2;
    return proizv;
 
}
//Печать объекта в виде (a,b,c,d,e)
void vect::print() const
{
    cout << '(' << a << ", " << b << ", " << c << ", " << d << ", " << e << ')';
}
 
 
 
int main(int argc, char* argv[])
{
    vect x(5, 6, 7, 8, 9), y(4, 3, 2, 1, 7);
    vect z;
    int scl = 8;
    cout << "\n Vector 1:   ";
    x.print();
    cout << "\n Vector 2:   ";
    y.print();
    z = x + y;
    cout << "\n Slozhenie:   ";
    z.print();
    z = x - y;
    cout << "\n Vichitanie:  ";
    z.print();
    z = x * y;
    cout << "\n Vector*Vector:   ";
    z.print();
    z = x * scl;
    cout << "\n Scalar1:   ";
    z.print();
    z = y * scl;
    cout << "\n Scalar1:   ";
    z.print();
    getch();
    return 0;
 
}
так?
ошибок много
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.02.2015, 20:25 7
Лучший ответ Сообщение было отмечено ManiaС_VB_PAS как решение

Решение

деструктор - рядом с другими методами, а не как у вас:
C++
1
2
3
4
5
6
class vect
{
public:
    ~vect();
   ....
};
чтобы увидеть что он работает:
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
int main(int argc, char* argv[])
{
  {
     vect x(5, 6, 7, 8, 9), y(4, 3, 2, 1, 7);
     vect z;
     int scl = 8;
     cout << "\n Vector 1:   ";
     x.print();
     cout << "\n Vector 2:   ";
     y.print();
     z = x + y;
     cout << "\n Slozhenie:   ";
     z.print();
     z = x - y;
     cout << "\n Vichitanie:  ";
     z.print();
     z = x * y;
     cout << "\n Vector*Vector:   ";
     z.print();
     z = x * scl;
     cout << "\n Scalar1:   ";
     z.print();
     z = y * scl;
     cout << "\n Scalar1:   ";
     z.print();
   }
   getch();
   return 0;
}
1
09.02.2015, 20:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2015, 20:25
Помогаю со студенческими работами здесь

Не работает деструктор
Прошу помощи.Делаю лабораторную. Написал программу для подсчета суммы элементов в тех строках...

Как работает деструктор?
1.Деструктор вызывается когда объект удаляется? ИЛИ 2. Сам деструктор удаляет объект? P.s....

Почему не работает деструктор?
Собственно говоря, почему? #include &lt;iostream&gt; using namespace std; class Osoba{ public :...

Почему не работает деструктор?
Подскажите пожалуйста, почему у меня не работает деструктор? #include &lt;iostream.h&gt; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru