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

Деструктор и указатель - C++

Восстановить пароль Регистрация
 
Qwoort
 Аватар для Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
17.06.2012, 19:46     Деструктор и указатель #1
Допустим, имеем класс с переменной-указателем:

C++
1
2
3
4
5
6
7
8
class A
{
    public:
        A(){}    
        ~A();
    private:
        int *X;
}
Деструктор для него можно задать так:

C++
1
2
3
4
A::~A()
{
    delete X;
}
Тогда как можно задать деструктор для класса с переменной не являющейся указателем?
То есть для такого класса:

C++
1
2
3
4
5
6
7
8
class A
{
    public:
        A(){}    
        ~A();
    private:
        int X;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2012, 19:46     Деструктор и указатель
Посмотрите здесь:

C++ Функция принимает указатель на void и возвращает указатель на int
C++ Деструктор для класс, имеющий указатель на самого себя
Указатель или ссылка на указатель. В чем разница? C++
C++ Преобразовать указатель одного типа в указатель другого.
C++ Почему создается виртуальный деструктор A, а в таблице виртуальных функций лежит деструктор B
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
17.06.2012, 19:48     Деструктор и указатель #2
никак, вся память, выделенная под поля класса, удаляется автоматически после выхода из деструктора. а командой delete ты очищаешь память не поля-переменной, а той области, на которую он указывает.
Qwoort
 Аватар для Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
17.06.2012, 20:46  [ТС]     Деструктор и указатель #3
спасибо
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.06.2012, 01:17     Деструктор и указатель #4
Qwoort, если переменная является указателем, это ещё не значит, что к ней следует применять delete Оператор delete используется исключительно в связке с опертором new.
Yandex
Объявления
18.06.2012, 01:17     Деструктор и указатель
Ответ Создать тему
Опции темы

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