Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Пн Авг 21 2006 15:50 Заголовок сообщения: В С++: что делают по умолчанию new и delete? |
|
|
Хочу узнать, вызывает ли не перегруженное new (класса «контейнер») конструктор (от (void), но перегруженный) поля, содержащегося в этом контейнере. (Аналогично, delete – вызывает ли деструктор для этого поля) ?
Или всё-таки их (delete и newкласса «контейнер») обязательно перегружать (при наличии инкапсулированного класса с перегруженным к-ром и д-ром)?
Спасибо. |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Пн Авг 21 2006 22:10 Заголовок сообщения: |
|
|
Допустим, есть класс mcont:
Код: | Class mcont{
Int n;
Char *c;
Mcont *next;
Public:
Mcont(void);
…
}; |
Теперь рассмотрим следующее:
Код: | mcont* mc;
mc=new mcont [10]; |
Вопрос, вызовет ли последняя строка к-р mcont::mcont(void), или ТОЛЬКО тупо выделит память под массив из 10 структур mcont? (вызов к-ра mcont::mcont(void) необходим хотя бы затем, чтобы n=0; c=NULL).
Надо перегружать new или в нём всё уже есть?
Аналогично – delete (тут, при отсутствии (неявного) вызова деструктора, (*с)!=NULL останется в дин. памяти).
В Страустропе ЯВНО об этом не сказано, поэтому спрашиваю. |
|
Вернуться к началу |
|
|
|