Здравствуйте!
Недавно на одном из тестирований по С++ мне попался вопрос:
"Верно ли, что память под объект всегда выделяется в конструкторе?"
Интересно, что они имели в виду?
Насколько я понимаю, в кострукторе память, строго говоря,
ИНИЦИАЛИЗИРУЕТСЯ, а не ВЫДЕЛЯЕТСЯ.
Правильно ли я понимаю, что в следующем примере:
A *a = new A;
память под объект типа A выделится еще до вызова конструктора,
а не внутри конструктора?
Кроме того, стандартная реализация new, кажется, выделяет
дополнительную память для хранения размера объекта,
а конструктор этого не делает.
Можно ли рассматривать эту память
как "память, выделенную под объект"?
Заранее спасибо.
Выделение памяти в конструкторе
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
по-любому память выделяется ДО вызова конструктора. Так что вопрос тестирования "провокационный". Хотя, думаю, ответ на него: "неверно".
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Скорее всего вопрос из теста подразумевал выделение памяти не под сам объект, а под динамически размещаемые поля объекта. В любом случае вопрос как минимум криво сформулирован.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.