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地址进行对象构造函数的初始化
转载请注明原文地址: https://ju.6miu.com/read-965241.html