Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для anapshy
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052

Работа с class, требуется объяснение/совет опытных

09.04.2017, 20:32. Показов 609. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
К примеру имеется такой код:
C++
1
2
3
4
5
6
7
void main(int argc, const char * argv[])
{
    const int n = 2;
    drug *obj[n];
    objects(obj, n); /* void objects(drug *obj[], int n) {...} */
    _getch();
}
Далее в функции objects происходят следующие действия:
C++
1
2
obj[i] = new tablets(number, name, price);
obj[i] = new mixture(size, name, price);
Следует ли после этого delete в этой же функции (далее в main ещё будет использоваться obj)? Если да, то как?
Ниже приведенный код не подходит!
C++
1
2
for (int i = 0; i < n; i++)
        delete obj[i];
Добавлено через 3 минуты
Так сойдет же?
C++
1
2
3
4
5
6
7
8
9
10
11
void main(int argc, const char * argv[])
{
    const int n = 2;
    drug *obj[n];
    objects(obj, n);
    for (int i = 0; i < n; i++)
        obj[i]->show();
    for (int i = 0; i < n; i++)
        delete obj[i];
    _getch();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2017, 20:32
Ответы с готовыми решениями:

Class и operator[] для N мерных массивов (требуется совет от опытных)
Добрый день :senor: Верно ли, что для того, чтобы получить доступ к элементу в N мерном массиве(private) достаточно лишь перегрузить...

Требуется совет опытных
Как называется такое %0 %1 %2 %3? И возможно ли такое в С++? P.s. взято из PAWN #define FormatMessage(%0,%1,%2,%3)...

Требуется совет опытных программистов
Основы С++ более менее изучены. Что же дальше? Что учить чтоб писать хоть какие то простенькие прикладные программы?

11
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.04.2017, 20:32
Цитата Сообщение от anapshy Посмотреть сообщение
Следует ли после этого delete ?
Когда эти объекты не нужны, ты обязан сделать delete.
Цитата Сообщение от anapshy Посмотреть сообщение
Ниже приведенный код не подходит!
Чем не подходит?
0
 Аватар для anapshy
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
09.04.2017, 20:40  [ТС]
nmcf,
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
void objects(drug *obj[], int n)
{
    string name;
    int price, number, size, a;
    cout << "Number: ";
    cin >> number;
    obj[i] = new tablets(number, "Peyta", 1337);
    cout << "Size: ";
    cin >> size;
    obj[i] = new mixture(size, "Kolya", 2280);
    /*for (int i = 0; i < n; i++)
        delete obj[i];
ТУТ ОСВОБОЖДАТЬ НЕ ПОЛУЧАЕТСЯ, Т.К. ВЫЛЕТАЕТ КОНСОЛЬ ИЗ-ЗА ОШИБКИ!!! */
}
 
void main(int argc, const char * argv[])
{
    const int n = 2;
    drug *obj[n];
    objects(obj, n);
    for (int i = 0; i < n; i++) /* Видишь? Он дальше используется */
        obj[i]->show();
    for (int i = 0; i < n; i++) /* ПОЛУЧАЕТСЯ НУЖНО ТУТ ОСВОБОЖДАТЬ ПАМЯТЬ, А НЕ В ТОЙ ФУНКЦИИ?! */
        delete obj[i];
/// Понимаешь о чем я?
    _getch();
}
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 20:40
Посмотрите принцип
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
28
29
30
31
32
33
class myclass{
private:
    std::string str;
public:
    myclass (std::string usr_str){
        str = usr_str;
    }
    void ShowMyClass(){
        std::cout << str << std::endl;
    }
};
 
 
int main(){
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
 
    short i(0);
    myclass* ptr[10];
 
    while (i < 10)
        ptr[i++] = new myclass ("Тра-ля-ля");
 
    i = 0;
    while (i < 10)
        ptr[i++] ->ShowMyClass();
 
    delete [] ptr;
 
 
    system ("pause");
    return NULL;
};
1
 Аватар для anapshy
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
09.04.2017, 20:41  [ТС]
Photofenix, ну вот, я так и думаю, что после всех операций и если дальше не используются, то освобождать память.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.04.2017, 20:43
Я же сказал: когда не нужны. Т. е. где-то в конце main() удалять, а не в этой функции.
1
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 20:46
Вы используете одномерный массив указателей. Его можно (нужно) удалить операцией
C++
1
delete [] ptr
Такая операция удаляет только первый элемент.
C++
1
delete ptr
Такая операция подойдет для удаления двухмерных массивов
C++
1
2
3
for (*(0); *!=*; *++)
delete[] ptr[i];
delete [] ptr;
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.04.2017, 20:50
Цитата Сообщение от Photofenix Посмотреть сообщение
Вы используете одномерный массив указателей. Его можно (нужно) удалить операцией
Он же статический.
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 21:03
Там же ссылки. Разве их удалить не нужно?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.04.2017, 21:04
По указателям удалять, а сам массив остаётся.
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 21:07
Так что ли???
C++
1
delete arr[i]
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.04.2017, 21:08
Да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2017, 21:08
Помогаю со студенческими работами здесь

необходим совет опытных программистов c++
ребят, помогите, пожалуйста, мне, новичку, если не сложно. вобщем есть у меня прога, которую я разбил на модули. В code.h и code.cpp...

Совет опытных читателей книг по программированию
В силу того что я хочу изучаю с++ с нуля, хочу купить книгу по данному языку Помогите с выбором: 1. Стивен Прата - &quot;Язык...

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

Знаю С, написать ничего толкового не могу, нужен совет опытных
Всем привет! года так 1.5 назад начал учить язык С/С++, итог тому, выучил С, в принципе знаю 80% языка, но проблема вот в чем, я не могу...

Требуется корректное объяснение
Добрый вечер форумчане) Хочу что бы мне на общедоступном и понятном языке объяснили что означает эта строчка #define eps 0.0001 . ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru