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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

Виртуальные деструкторы - C++

01.02.2014, 10:46. Просмотров 628. Ответов 21
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
 
class first
{
public:
    first();
    virtual ~first(){delete pointer;}
    virtual void text(){cout<<"text"<<endl;}
    void text2(){cout<<"text2"<<endl;}  
};
 
class second:public first
{
public:
    second();
    virtual ~second(){delete pointer;}
    virtual void text(){cout<<"text"<<endl;}        
    void text2(){cout<<"text2"<<endl;}
};
 
int main()
{   first *pointer=new second;
    pointer->text();
    pointer->text2();
    system("pause");
}
Как я понял правильно,вызовется сперва деструктор производного класса,т.к. он виртуальный,а потом он автоматически вызовет деструктор базового класса,чтобы окончательно удалить динамический объект.Тело деструкторов обоих классов написал криво,судя по логам компилятора:"нельзя удалять объекты, не являющиеся указателями".Помогите исправить.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 10:46     Виртуальные деструкторы
Посмотрите здесь:

Виртуальные деструкторы - C++
Можно ли вызвать деструктор базового класса вместо использования виртуальных деструкторов? class CBase { public: CBase(const...

Наследование. Виртуальные методы/деструкторы. - C++
Есть базовый класс Cell (код можно даже не смотреть - он просто для иллюстрации -&gt; вопрос внизу) class Cell { friend class Obstacle;...

Деструкторы - C++
Не совсем понятно, по какой все таки причине разработчики C++ отказались от возможности иметь деструкторы с аргументами, то есть передавать...

Деструкторы - C++
Всем доброго времени суток! Возникли некоторые непонятки с деструкторами, а точнее их время вызова и механизм работы. Вот код: ...

Деструкторы - C++
Вообщем сразу к сути. В нижеприведенном примере вызывается 2 деструктора. Я никак не пойму, почему именно два? вот сам метод: ...

Где деструкторы? - C++
Ребят сижу разбираю код на С++,не могу понять где диструктор тут.. #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 202
01.02.2014, 12:48     Виртуальные деструкторы #21
Цитата Сообщение от Игорюня Посмотреть сообщение
Я так понял,что запутался из-за того,что указатель был не в классе,отсюда и каша.
совершенно верно. деструкторы в классе нужны только если что-то создается в классе. И удалять это "что-то" нужно только в том классе где оно создается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 12:51     Виртуальные деструкторы
Еще ссылки по теме:

for_each и деструкторы - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; class display { public: display() : i(0) { cout &lt;&lt; &quot;display...

Констуркторы, деструкторы.... - C++
Необходимо для динамического типа данных описать класс, содержащий указатель на динамический тип как поле данных. Для этого класса описать...

Деструкторы и исключения - C++
В одном учебнике встретилась такая фраза: Если деструктор, вызванный в процессе разматывания стека, выбрасывает исключение, вызывается ...

Ромбовидное наследование. Деструкторы. - C++
глобальная цель - ромбовидное наследование. Сейчас цель - разобраться с вызовами конструкторов/деструкторов. в смысловую нагрузку кода не...


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

Или воспользуйтесь поиском по форуму:
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
01.02.2014, 12:51  [ТС]     Виртуальные деструкторы #22
Всем спасибо,буду знать теперь.
Yandex
Объявления
01.02.2014, 12:51     Виртуальные деструкторы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru