Выражение operator new(sizeof(T))
выделяет T
байт через ::operator new
, правильно?вызов оператора класса-класса new
Есть ли способ вызвать версию класса-специфичный operator new
, если она существует, именно так, как new T()
выделяемой памяти (перед вызовом конструктора)?
T::operator new(sizeof(T))
дает ошибку во время компиляции, если T
не определяет operator new
, даже если T
наследуется от базового класса, который определяет его. То, что я хотел бы назвать это:
Foo::operator new
еслиFoo
определяетoperator new
Base::operator new
еслиFoo
происходит отBase
, что определяетoperator new
(то, что мне делать множественное наследование?)::operator new
иначе
Зачем вам это нужно явно? Если оператор 'new' перегружен для класса, компилятор будет использовать его всякий раз, когда вы создаете экземпляр этого объекта с помощью' new ClassName'. –
@Ama: Потому что я не хочу создавать объекты. Я хочу только память, поэтому я могу использовать новое место размещения в более поздний момент времени. – fredoverflow
Можете ли вы объяснить, чего вы пытаетесь достичь? Разумеется, если вы отделяете выделение памяти от конструкции объекта, вы можете выделить память так, как хотите? Зачем вам выделять память так же, как 'new T'? –