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

Деструктор класса. Удаление динамически выделенного массива в классе - C++

17.05.2015, 22:46. Просмотров 821. Ответов 21
Метки нет (Все метки)

First.h
C++
1
2
3
4
5
6
7
8
9
class First
{
private:
    int* num;
    int n;
public:
    First(int a);
    ~First();
};
First.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "First.h"
 
First::First(int a)
{
    n = a;
    num = new int[a];
}
 
First::~First()
{
    delete[n] num;
}

http://www.cyberforum.ru/cpp-beginners/thread135946.html
0
Миниатюры
Деструктор класса. Удаление динамически выделенного массива в классе  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2015, 22:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Деструктор класса. Удаление динамически выделенного массива в классе (C++):

Деструктор в классе
Нужно создать класс бинарного дерева. Все сделано, кроме деструктора....

Конструктор и деструктор в классе
Решил разобраться в конструкторах и деструкторах. Написал, вроде по такой же...

Ругается на деструктор (выделял динамически память). Почему?
Вот код: #include <stdio.h> #include <conio.h> #include <time.h> #include...

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый...

Удаление из массива элементов класса
пытаюсь разобраться с классами, но особо не получается..да и вечное "скорее...

21
hoggy
Заблокирован
17.05.2015, 23:39 #21
Цитата Сообщение от lss Посмотреть сообщение
Это как? Что освобождаем?
копипаста.

имел ввиду вот это:

C++
1
2
3
4
5
First::~First()
{
    delete[] num;
    num = nullptr;
}
Цитата Сообщение от lss Посмотреть сообщение
А в коде у ТС разве не так?
в коде у ТС UB.

но вы выделили не весь достаточный для понимания контекст кода ТС,
а лишь отдельно взятую строчку: ручной вызов деструктора.

как будто бы ручной вызов деструктора - уже UB, само по себе.
1
DrOffset
7518 / 4514 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
17.05.2015, 23:42 #22
lss, он имел в виду, что сам по себе вызов деструктора явно - это не UB (для этого есть оправданные применения).
UB - это повторный вызов деструктора при выходе из области видимости, вследствие явного вызова оного до этого.
Поэтому он процитировал контекст, вместо одной строчки.
Хотя, я убежден, что ты имел в виду абсолютно тоже самое.
2
17.05.2015, 23:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2015, 23:42
Привет! Вот еще темы с решениями:

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся...

Деструктор класса
когда мы вызываем деструктор, для удаления динамического массива к примеру,...

деструктор класса
Здравствуйте! Я скопировал код отсюда...

Деструктор класса
Имеется собственный класс, возник вопрос, деструктор класса вызывается не явно...


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

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

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