覆盖删除操作符

6 c++ oop new-operator

我想在我的班级中覆盖删除操作符.这是我想要做的,但没有成功.

class Complex{              
    void *operator new(size_t s);
    void operator delete(void *ptr);
};

void Complex::operator delete(void *ptr){
    delete ptr;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

删除void*未定义

Rob*_*obᵩ 5

如错误消息所示,您不能delete使用void*。尝试这个:

// See http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=40

#include <new> // for size_t

class Complex
{
public:
 Complex() {}
 ~Complex() {}
 static void* operator new (size_t size) {
  return new char[size];
 }
 static void operator delete (void *p) {
  return delete[] static_cast<char*>(p);
 }
};

int main () {
  Complex *p = new Complex;
  delete p;
}
Run Code Online (Sandbox Code Playgroud)