Cuando sobrecargamos un nuevo operador de una clase, declaramos la función como una función miembro. Por ejemplo:Operador sobrecarga nuevo para una clase
class OpNew {
public:
OpNew() { cout << "OpNew::OpNew()" << endl;}
void* operator new(size_t sz) {
cout << "OpNew::new: "
<< sz << " bytes" << endl;
return ::new char[sz];
}
};
¿Cómo funciona el comunicado OpNew *obj = new OpNew
bajo el capó? ya que el nuevo sobrecargado es miembro de la clase OpNew, no es estático. Entonces, ¿cómo garantiza el compilador que esta llamada a la función de miembro new
tenga éxito?
It * debe * ser estático. –
Espero que haya sobrecargado 'operator delete' también, de lo contrario tendrá un comportamiento indefinido. – sharptooth
Por supuesto que sí, eso fue solo un fragmento :) –