Страница 1 из 1

Выделение памяти в конструкторе

Добавлено: 30 июн 2005, 23:15
JAGuar
Здравствуйте!

Недавно на одном из тестирований по С++ мне попался вопрос:
"Верно ли, что память под объект всегда выделяется в конструкторе?"

Интересно, что они имели в виду?
Насколько я понимаю, в кострукторе память, строго говоря,
ИНИЦИАЛИЗИРУЕТСЯ, а не ВЫДЕЛЯЕТСЯ.

Правильно ли я понимаю, что в следующем примере:

A *a = new A;

память под объект типа A выделится еще до вызова конструктора,
а не внутри конструктора?

Кроме того, стандартная реализация new, кажется, выделяет
дополнительную память для хранения размера объекта,
а конструктор этого не делает.
Можно ли рассматривать эту память
как "память, выделенную под объект"?

Заранее спасибо.

Добавлено: 01 июл 2005, 10:03
Absurd
Неправда. Память под объект выделяется с помощью operator new (не путать new и operator new).

Добавлено: 04 июл 2005, 21:21
Sera
по-любому память выделяется ДО вызова конструктора. Так что вопрос тестирования "провокационный". Хотя, думаю, ответ на него: "неверно".

Добавлено: 05 июл 2005, 14:55
Romeo
Скорее всего вопрос из теста подразумевал выделение памяти не под сам объект, а под динамически размещаемые поля объекта. В любом случае вопрос как минимум криво сформулирован.