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

Оператор delete в деструкторе

13.01.2014, 22:45. Показов 2101. Ответов 3
Метки нет (Все метки)

Здравствуйте, нужна помощь, есть класс и функция к которую передается этот класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
using namespace std;
 
class a
{
public:
    a(){f = new char (100);}
    ~a(){delete f;}
    char *f;
};
 
void how (a g)
{cout<<g.f;}
 
int main ()
{
a b;
how(b);
return 0;
}
Этот код скомпилируется и почти выполниться, но будет ошибка так как деструктор вызовется два раза, сначала для копии класса потом для самого класса и получится, что он захочет второй раз освободить память. Что нужно изменить в именно в Классе что бы такой код выполнился?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2014, 22:45
Ответы с готовыми решениями:

Ошибка при работе delete в деструкторе
enum place { first = 1, second }; class Passanger { public: Passanger(); void Call(); ...

После закрытия консоли выплывает необработанное исключение, delete в деструкторе
class X{ float *xo,*yo,*zo,*fo; public: X(); ~X(){}; friend void run(X x); friend...

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; using namespace std; class fun {...

Ошибка при вызове деструктора (при вызове delete в деструкторе)
Не могу найти ошибку, при вызове деструктора от класса, который был создан при помощи конструктора...

3
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
13.01.2014, 22:47 2
Цитата Сообщение от Tolstopyz Посмотреть сообщение
Что нужно изменить в именно в Классе что бы такой код выполнился?
Корректный конструктор копирования и оператор присваивания
1
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 2
13.01.2014, 22:54  [ТС] 3
Спасибо
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.01.2014, 22:55 4
Правило трёх
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2014, 22:55
Помогаю со студенческими работами здесь

Оператор delete
Написал небольшую программу и в просмотрел каждую строчку в отладчике. И получается что сразу же...

Оператор delete[]
Каким образом оператор delete определяет какой участок памяти нужно &quot;удалить&quot;?

Оператор delete[]
Салют! тут вот в чем вопрос... Если с помощью new выделена память под несколько, скажем,...

оператор delete
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;iomanip&gt; using namespace std; int main() {...


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

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

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