Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2011, 14:05   #1
KOLANICH
Пользователь
 
Регистрация: 24.04.2010
Сообщений: 28
По умолчанию оператор delete

есть класс- к
Код:
class a{
public: int b;
}
class c:public a{
 public:int d;
}

.....
a *p1;
p1 =(a*) new c();
delete p1;//должно удалить объект класса с, как это реализовать

Последний раз редактировалось KOLANICH; 27.07.2011 в 14:19.
KOLANICH вне форума Ответить с цитированием
Старый 27.07.2011, 14:14   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Насколько мне известно, оператор delete достаточно умен, чтобы удалить объект целиком. Для проверки использовал следующий код:
Код:
class A {char aaa[10];};
class B:public A {char bbb[100];};
int main()
{
	A* p;
	while(1){
		p = new B;
		delete p;
	}
}
Утечки памяти не было.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 27.07.2011, 14:21   #3
KOLANICH
Пользователь
 
Регистрация: 24.04.2010
Сообщений: 28
По умолчанию

значит проблема в чём-то другом
KOLANICH вне форума Ответить с цитированием
Старый 27.07.2011, 14:44   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

посмотрите на динамически выделяемые ресурсы, точно ли они освобождаются.

кстати, в вашем примере, кастинг(тем более Сишный) поидее не нужен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 15:24   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2KOLANICH
Код:
class a{
public:
int b;
virtual ~a() {}
}
class c:public a{
 public:int d;
}

.....
a *p1 = new c;
delete p1;
вопросы?
если я правильно понял, что у тебя деструктор C не вызывался
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 27.07.2011 в 15:37.
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24
error C2541: 'delete' : cannot delete objects that are not pointers novokhatsky Общие вопросы C/C++ 2 14.12.2009 10:25
Перегрузка операций new, new[], delete, delete[] IgorKr Общие вопросы C/C++ 1 22.10.2008 12:14