46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|||||||||||
1 | |||||||||||
Динамический объект класса и деструктор08.09.2013, 22:20. Показов 5454. Ответов 16
Метки нет (Все метки)
Добрый вечер.
Есть класс, конструктор и деструктор:
Предположим, в коде main нам нужно сделать несколько объектов класса В, но только пользователь знает сколько. Как сделать неопределённое кол-во классов? Например, как мы делаем динамический массив:
Хорошо, предположим, пользователь сделал 10 объектов класса и вдруг понял, что один из них ему не нужен, ему нужно удалить объект класса, а потом ему нужно будет ещё сделать 10 объектов класса. Как удалить объект класса в середине? А по завершению программы? *пойдёт ли использование деструктора и как его использовать? В книге не очень хорошо написано, не могу понять именно с new* вариантом
0
|
08.09.2013, 22:20 | |
Ответы с готовыми решениями:
16
Динамический объект класса Создать обЪект класса , у которого в параметрах конструктора объект этого же класса Объект с указателем - деструктор Одномерный динамический массив(конструктор и деструктор) |
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
08.09.2013, 22:27 | 2 | |||||
1
|
Модератор
|
||||||
08.09.2013, 22:35 | 3 | |||||
Да, все можно. Вот твой, но чуть подправленный код:
1
|
7 / 7 / 3
Регистрация: 11.08.2013
Сообщений: 33
|
|||||||||||
08.09.2013, 22:39 | 4 | ||||||||||
Во первых создать динамически обьэкт класса :
старый указатель удалить и присвоить новое значение
Деструктор действует только для элиментов класса, и играет роль при копровании и перегрузке классов с элиментами с динамически выделеной памятю.
1
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
08.09.2013, 22:42 | 5 | |||||
Catstail , Вы думаете что эта строка не смутит человека
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
08.09.2013, 22:52 | 7 | |||||
Ничего плохого )). Я просто подумал что автор темы не знает арифметику указателей(только мое предположение) и стока вида
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
08.09.2013, 23:21 [ТС] | 8 |
egor2116, с вариантом "->" пришлось познакомиться, когда были:
texBox1->label1->Text=... что то там такое было, да. но вариант с точной мне больше нравится Хорошо. тогда подскажите вот такой момент: Вот в примере я выделила память под int переменную. Потом я захотела сделать ещё. НО, весь класс я храню в файле и в векторе (т.е., у меня задача - класс должен уметь делать запись в файл). Предположим, я добавлю в вектор и всё - мне больше "объект класса" не нужен -- удалить его что ли? Выходит, одним динамическим объектом я смогу сделать сколько угодно, потому что у меня будет вектор, в который я смогу в любой момент добавить и удалить, хранение ещё будет в файле, а класс, чтобы правильно записать. Так? Или я вообще что-то неправильное говорю? Задача у класса: чтение и запись в файл (методы класса, точнее). А ещё вывод и ввод с экрана\на экран. Поэтому, я предполагала, что внутри программы будет вектор. Класс - чтобы заполнить вектор. (двумерный вектор и несколько полей у класса, если что) Класс, чтобы его распечатать, в текущий момент, класс - чтобы его записать в файл, и класс, чтобы его извлечь из файла. Т.е., я даже не совсем могу представить как это делать, но мысли пока что такие. Добавлено через 12 минут Оговорюсь: все 4 метода делать будет 1 класс. Добавлено через 7 минут Перечитала ответы, ещё раз уточню для себя: При помощи new мы сделали динамический массив с типом В, так? О, а вектор можно? Я тут подумала, что с вектором было бы проще "добавить и удалить", потому что и пользователь не знает размер и захочет то добавлять элементы, то удалять их. Хорошо, предположим, с вектором можно -- удалить из вектора ремувом и всё? И деструктор не нужен тогда в середине где-нибудь?
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
08.09.2013, 23:25 | 9 | |||||
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
09.09.2013, 19:15 [ТС] | 10 |
Не по теме: ааааа, ну да, вы правы, не совсем понятно. А что это означало? Arr это массив из В, и меняется, суммируется массив и i, -- это изменение указателя на "ячейку" или ссылки? Добавлено через 12 часов 19 минут Подскажите, пожалуйста, ещё вот что: Хотя я думаю, что у меня тут ошибка: точку подчёркивает и пишет:
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
|
10.09.2013, 23:34 | 11 |
Вы заталкиваете указатель на В а вектор должен содержать В разыменуйте указатель или используйте просто обьект В, а не указатель на него.
0
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
11.09.2013, 17:05 [ТС] | 12 |
egor2116, а как тогда мне создать кучу "объектов" класса В?
Т.е., проблема такая: У меня есть вектор с типом В. В вектор надо по одному складывать. Можно даже так: 3 раза сложили, 1 раз удалили, 4 раза сложили, 2 удалили и т.д. Как мне тогда создавать объекты класса, чтобы они в векторе могли потом существовать? Если у меня нет конкретного кол-ва переменных\объектов класса В.
0
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
11.09.2013, 17:21 | 13 |
в чем сложность динамического создания одного элемента и добавления его в список
0
|
2 / 2 / 2
Регистрация: 28.08.2013
Сообщений: 26
|
||||||
11.09.2013, 17:23 | 14 | |||||
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
11.09.2013, 18:37 [ТС] | 15 |
Ааааа, ёлки!
Всё не могу привыкнуть к тому, что у меня В, это как .. ну как int, char, bool. Я всё думаю что это не тип данных а .. ну как структура\список\лист, что ли. Всоооооо, огромное спасибо!!!
0
|
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
|
|
11.09.2013, 18:43 | 16 |
0
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
11.09.2013, 19:17 [ТС] | 17 |
балин. Ну хорошо, как функция. Что-то такое, сумбурное.
0
|
11.09.2013, 19:17 | |
11.09.2013, 19:17 | |
Помогаю со студенческими работами здесь
17
Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса? Описать объект, имеющий необходимые поля, конструктор, деструктор Нужно ли отдельно прописывать деструктор, если одно из полей - объект Деструктор класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |