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

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

Восстановить пароль Регистрация
 
Tolstopyz
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 2
13.01.2014, 22:45     Оператор delete в деструкторе #1
Здравствуйте, нужна помощь, есть класс и функция к которую передается этот класс:

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;
}
Этот код скомпилируется и почти выполниться, но будет ошибка так как деструктор вызовется два раза, сначала для копии класса потом для самого класса и получится, что он захочет второй раз освободить память. Что нужно изменить в именно в Классе что бы такой код выполнился?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 22:45     Оператор delete в деструкторе
Посмотрите здесь:

C++ Оператор delete[]
оператор delete[] C++
Можно ли обобщить оператор delete ? C++
Оператор delete C++
Оператор delete[] C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11843 / 6822 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
13.01.2014, 22:47     Оператор delete в деструкторе #2
Цитата Сообщение от Tolstopyz Посмотреть сообщение
Что нужно изменить в именно в Классе что бы такой код выполнился?
Корректный конструктор копирования и оператор присваивания
Tolstopyz
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 2
13.01.2014, 22:54  [ТС]     Оператор delete в деструкторе #3
Спасибо
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.01.2014, 22:55     Оператор delete в деструкторе #4
Правило трёх
Yandex
Объявления
13.01.2014, 22:55     Оператор delete в деструкторе
Ответ Создать тему
Опции темы

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