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

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

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

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

16.04.2013, 17:19. Просмотров 651. Ответов 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? ( у меня компилятор ругается, но я не уверен что само создание и удаление опсианы правильно). Судя по дебаггеру, память так и не освобождается до конца программы, и я что-то не допру почему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 17:19     Создание и удаление объектов
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Добавления и удаление объектов из динамического массива - C++
Есть динамический массив объектов класса. Как реализовать возможность добавления или удаления объектов из массива.

Добавление и удаление объектов с перегрузкой операторов '+' и '-' - C++
У нас есть массив указателей на объекты, и нужно осуществить добавление и удаление объектов с помощью перегрузки оперторов '+' и '-'. ...

Удаление объектов при закрытии консоли - C++
Как осуществить удаление объектов, созданных с помощью new, при закрытии консоли через крестик?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 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);
         //...
    }
}
Kamuniaft
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 3
16.04.2013, 18:24  [ТС]     Создание и удаление объектов #3
Это действительно утихомирило компилятор. Но повлекло за собой ошибку "expression block type is valid" в районе вызова деструктора. Собственно разобрался с проблемой закоментив деструктор. Проблема как я понял в том, что компилятор сам вызывает деструктор в конце каждого локального блока, получается деструктор я вызывал два раза. Возникли вопросы - когда, и вообще зачем используется явный вызов деструктора объекта?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.04.2013, 18:39     Создание и удаление объектов #4
Цитата Сообщение от Kamuniaft Посмотреть сообщение
"expression block type is valid" в районе вызова деструктора
не надо вызывать деструктор явно если объект созоздаеться так как вы написали
C++
1
queue queue1(count);
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,248
Записей в блоге: 1
Завершенные тесты: 1
16.04.2013, 18:48     Создание и удаление объектов #5
Цитата Сообщение от Kamuniaft Посмотреть сообщение
когда, и вообще зачем используется явный вызов деструктора объекта?
В очень редких случаях, например внутри оператора delete.
Yandex
Объявления
16.04.2013, 18:48     Создание и удаление объектов
Ответ Создать тему
Опции темы

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