void *operator new(size_t szie);
void operatro delete(void *ptr) noexcept;
1.这个可以在自己的全局域中重载这些函数,也可以在对象中重载这些函数。
2.如果在对象中重载了这些参数,如
class A {
public:
void *operator new(size_t size, int msg) {
return malloc(size);
}
};
int main() {
A *a = new A();// 会编译错误,编译器当发现对象中已经有重载的new的时候,但是发现不匹配,会直接报错,而不会在去全局进行搜索匹配
return 0;
}
void *operator new(size_t size, void *ptr) // 定位new表达式,该表达式不进行内存分配,而是在已经分配好的ptr地址进行对象构造函数的初始化