Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kamuniaft
0 / 0 / 1
Регистрация: 16.04.2013
Сообщений: 3
#1

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

16.04.2013, 17:19. Просмотров 787. Ответов 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++):

Создание/удаление объектов
Здравствуйте. На сколько мне известно есть 2 способа создания объекта - с помощью слова new и без него. Если верить Брюсу Экелю чтобы...

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

Добавление и удаление объектов. Рисование объектов на экране
Доброго времени суток. Есть очень интересующий вопрос, как сделать добавление, обновление, удаление объектов? Допустим есть класс...

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

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

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

4
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 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 / 1
Регистрация: 16.04.2013
Сообщений: 3
16.04.2013, 18:24  [ТС] #3
Это действительно утихомирило компилятор. Но повлекло за собой ошибку "expression block type is valid" в районе вызова деструктора. Собственно разобрался с проблемой закоментив деструктор. Проблема как я понял в том, что компилятор сам вызывает деструктор в конце каждого локального блока, получается деструктор я вызывал два раза. Возникли вопросы - когда, и вообще зачем используется явный вызов деструктора объекта?
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 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
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 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
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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