Предположим, у меня есть следующий класс:
class Sample {
public:
Sample( int ) {}
};
некоторая функция, возвращающая int
int SomeFunction()
{
return 0;
}
и этот код:
Sample* sample = new Sample( SomeFunction() );
Теперь ожидаю следующую последовательность:
SomeFunction()
запускается, затем::operator new()
запускается для выделения памяти для объекта, затемclass Sample
конструктор запускается в выделенной памяти
Фиксирован ли этот порядок или его можно изменить с помощью такой реализации, которая, скажем, сначала выделяет память, затем вызывается SomeFunction()
, а затем запускается конструктор? Другими словами, может ли вызов operator new()
функции и вызов конструктора класса чередоваться с чем-либо?
SomeFunction()
будет вызываться всегда перед конструкторомSample()
. Так что вопрос сузится только междуSomeFunction()
иoperator new
. - person iammilind   schedule 04.05.2011