Когда мы перегружаем новый оператор класса, мы объявляем функцию как функцию-член. Например,
class OpNew {
public:
OpNew() { cout << "OpNew::OpNew()" << endl;}
void* operator new(size_t sz) {
cout << "OpNew::new: "
<< sz << " bytes" << endl;
return ::new char[sz];
}
};
Как работает оператор OpNew *obj = new OpNew
под капотом? поскольку перегруженный новый является членом класса OpNew, а не статичным. Итак, как компилятор обеспечивает выполнение этого вызова функции new
member?