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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
#1

new delete - C++

24.03.2011, 11:43. Просмотров 572. Ответов 6
Метки нет (Все метки)

здраствуйте! назрел вопрос

class cls1 {
...
...
}

class cls2 {
...
cls1 *pt = new cls1();
...
}

void main(...) {
...
cls2 *pt = new cls2();
...
delete pt;
}

я так понимаю класс cls1 повиснет где то в памяти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 11:43     new delete
Посмотрите здесь:

C++ delete this
C++ delete[]
new - delete C++
C++ new и delete
C++ delete this
C++ delete[]
C++ new[] - delete[]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 12:42     new delete #2
Да, так и есть.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 12:56     new delete #3
Цитата Сообщение от pito211 Посмотреть сообщение
class cls2 {
...
cls1 *pt = new cls1();
...
}
ну, только не совсем так, а примерно вот так
C++
1
2
3
4
5
6
7
8
9
class cls2
{
public:
cls2() {pt = new cls1;}
 
...
cls1 *pt;
...
}
Цитата Сообщение от pito211 Посмотреть сообщение
void main(...) {
...
cls2 *pt = new cls2();
...
delete pt;
}
я так понимаю класс cls1 повиснет где то в памяти?
в этом случае даже известно где
C++
1
pt->pt
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17192 / 5446 / 337
Регистрация: 30.03.2009
Сообщений: 14,780
Записей в блоге: 26
24.03.2011, 12:57     new delete #4
Цитата Сообщение от pito211 Посмотреть сообщение
я так понимаю класс cls1 повиснет где то в памяти?
Повиснет не класс, а экземпляр класса
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 13:16     new delete #5
C++
1
2
3
4
5
6
7
8
9
class cls2 {
~cls2()
{
       delete pt;
}
...
cls1 *pt = new cls1();
...
}
И не зависнет уже никто...

Добавлено через 21 секунду
*повиснет
*нигде
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 13:30     new delete #6
Цитата Сообщение от Deviaphan Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
class cls2 {
~cls2()
{
       delete pt;
}
...
cls1 *pt = new cls1(); // !!!
...
}
Уже так стало можно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 13:32     new delete
Еще ссылки по теме:

C++ new и delete
New/Delete C++
New delete C++
Указатели и delete C++

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 13:32     new delete #7
Цитата Сообщение от bigredcat Посмотреть сообщение
Уже так стало можно
Под ... ... вполне может скрываться конструктор или метод.)
Ошибку компиляции он ведь найти сможет, надеюсь.)
Yandex
Объявления
24.03.2011, 13:32     new delete
Ответ Создать тему
Опции темы

Текущее время: 17:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru