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

Удаление объекта класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найдите ошибку http://www.cyberforum.ru/cpp-beginners/thread889643.html
Помогите найти ошибку в программе /*prog222.pas Программа решает следующую задачу: Даны вещественные положительные a, b, c, d, e, f. Считаем, что пары чисел a и b, c и d, e и f обозначают размеры первого, второго и третьего прямоугольника соответственно. Выяснить, можно ли внутри одного из прямоугольников уместить два других, не накладывая один на другой. */ #include <iostream>
C++ Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания Не работает , выдает ошибку...Можно решение с комментариями!!?) #include <iostream> #include <fstream> using std::ifstream; using std::ofstream; #include <string> using std::string; http://www.cyberforum.ru/cpp-beginners/thread889634.html
C++ Подготовка и решения на ПЭВМ задач обработки массивов с использованием указателей
помогите пожалуйста((( В одномерном массиве, состоящем из n действительных элементов, вычислить: • умножение положительных элементов массива; • сумму элементов массива, расположенных до минимального элемента. Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.
Нужна обучающая программа выполнение действия над векторами на С++ C++
Задача разрабатываемой программы: -умножение векторов -вычитание векторов -умножение векторов -умножение вектора на число -проверка на колиниарность. Все должно быть построено таким образом, что бы можно было вводить координаты точек векторов и при этом на осях координат рисовались вектора и соответственно решение. Помощь нужна с 0. кто поможет, не обижу.
C++ Оформление оператора вывода в С++ http://www.cyberforum.ru/cpp-beginners/thread889603.html
Итак, пишу некий класс на С++, программа предназначается для одного МК, так вот есть класс и в нем я хочу перегрузить operator << (), для вывода символа и числа: class Blablabla { public: ... Blablabla& operator << (char x); Blablabla& operator << (int x); ... };
C++ Разработать рекурсивную функцию,возвращающую значение для вычисления n-го члена следующей последовательности : b1 = -10, b2 = 2, bn+2 = |bn|-6bn+1 подробнее

Показать сообщение отдельно
stima
432 / 287 / 16
Регистрация: 22.03.2011
Сообщений: 936
Завершенные тесты: 1
03.06.2013, 22:06     Удаление объекта класса
это выделение и удаление массива обьектов
C++
1
2
A *a = new A[count];
delete[] a;
это выделение и удаление массива указателей на обьекты, а также выделение и удаление обьектов.
C++
1
2
3
4
5
6
7
8
9
10
11
A **a = new A*[count];
for (int i = 0; i < count; ++i)
     a[i] = new A();
 
for (int i = 0; i < count; ++i)
{
     delete a[i];
     a[i] = NULL;
}
 
delete[] a;
Вы можете использовать оба. Оба верны. Просто память управляется по разному. В чем разница?
1. В первом случае, Вы "не удаляете" обьект, а просто "помечаете" его удаленным. А также Вы можете указать место для создание нового обьекта.
C++
1
2
3
A *a = new A[count];
a[5]->~A();
new(a[5]) A;
2. Во втором случае вы удаляете обьект.
C++
1
2
3
A **a = new A*[count];
a[5] = new A;
delete a[5];
3. Как вы заметили второй случай более понятный, но требует перерасхода на память (count * sizeof(void*))

Соответственно Ваши 2 функции должны использовать один из предложенных методов.
 
Текущее время: 14:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru