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

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

Войти
Регистрация
Восстановить пароль
 
Kamuniaft
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 3
#1

Создание и удаление объектов - C++

16.04.2013, 17:19. Просмотров 683. Ответов 4
Метки нет (Все метки)

Люди, прошу прошения за тупой вопрос, но что-то в гугле сходу не нашел. Вот, допустим, есть класс реализующий простенькую очередь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class queue 
{
private:
    int *q;
    int head, tail, num, length;
public:
    queue() : head(0), tail(0), num(0), length(10) 
    {
        q = new int[length];
    }
 
    queue(int length_init) : head(0), tail(0), num(0), length(length_init)
    {
        q = new int[length];
    }
 
    ~queue()
    {
        delete []q;
    }
В мэйне создается объект класса
C++
1
queue queue1(count);
Потом вызываем деструктор для этого объекта.

Собственно вопрос - после вызова деструктора, возможно создание нового объекта с таким же именем queue1? ( у меня компилятор ругается, но я не уверен что само создание и удаление опсианы правильно). Судя по дебаггеру, память так и не освобождается до конца программы, и я что-то не допру почему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание и удаление объектов (C++):

Создание/удаление объектов класса - C++
Имеется следующий код: cow.h #ifndef COW_H #define COW_H class Cow { private: char name; char * hobby;

Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один)) - C++
добрый день. помогите, пожалуйста понять мои ошибки в работе. Мне нужно написать программу со своей библиотекой, которая включает в себя...

Удаление объектов класса - C++
Никак не могу понять, как правильно освободить память. Подскажите пожалуйста в чем ошибка. #include "Head.h" int min(int a, int b) { ...

Удаление объектов GDI - C++
Почему нужно удалять созданные (например так: hRgn = CreateRectRgn(0, 0, 0, 0); ) объекты GDI? ну то есть зачем их удалять явно?...

Удаление из вектора объектов - C++
Есть вектор, состоящий из объектов какого-то класса. Есть объект принадлежащий этому классу. На вход методу приходит этот объект и его...

Ненужное удаление объектов - C++
В классе есть метод, в котором при определенных условиях создаются объекты и помещаются в список, так вот как сделать так чтобы объекты...

4
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.04.2013, 17:23 #2
Цитата Сообщение от Kamuniaft Посмотреть сообщение
возможно создание нового объекта с таким же именем queue1?
внутри фигурных скобок может быть только один queue1, но можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
{
    {
         queue queue1(count);
         //...
    }
    {
         queue queue1(count);
         //...
    }
}
1
Kamuniaft
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 3
16.04.2013, 18:24  [ТС] #3
Это действительно утихомирило компилятор. Но повлекло за собой ошибку "expression block type is valid" в районе вызова деструктора. Собственно разобрался с проблемой закоментив деструктор. Проблема как я понял в том, что компилятор сам вызывает деструктор в конце каждого локального блока, получается деструктор я вызывал два раза. Возникли вопросы - когда, и вообще зачем используется явный вызов деструктора объекта?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.04.2013, 18:39 #4
Цитата Сообщение от Kamuniaft Посмотреть сообщение
"expression block type is valid" в районе вызова деструктора
не надо вызывать деструктор явно если объект созоздаеться так как вы написали
C++
1
queue queue1(count);
0
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
16.04.2013, 18:48 #5
Цитата Сообщение от Kamuniaft Посмотреть сообщение
когда, и вообще зачем используется явный вызов деструктора объекта?
В очень редких случаях, например внутри оператора delete.
1
16.04.2013, 18:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 18:48
Привет! Вот еще темы с ответами:

Удаление объектов(деструкторы) - C++
Можете нормально объяснить как пользоваться деструкторами. Допустим мне нужно удалить созданный объект в классе, КАК????????

Удаление динамических объектов - C++
есть программа, в которой реализован список объектов, создающиеся динамически. Перед вами функция, которая получает указатель на один из...

Удаление объектов при наследовании - C++
Ребят, объясните такую штуку. Как-то пропустил элементарное. Foo - базовый класс Bar - наследник const size_t N = 1; ...

Удаление из вектора нескольких объектов - C++
Собственно как удалить несколько объектов из вектора, имея индексы/итераторы, ведь при удалении первого объекта придется пройтись по всем...


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

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

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