c++ new delete重载

    xiaoxiao2021-12-14  17

    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

    最新回复(0)