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