小编exp*_*inc的帖子

为什么在运算符delete中不调用析构函数?

我试图在其中召唤::delete一堂课operator delete。但是不调用析构函数。

我定义的类MyClass,其operator delete过载。全局operator delete也超载。重载operator deleteMyClass将调用重载的全局operator delete

class MyClass
{
public:
    MyClass() { printf("Constructing MyClass...\n"); }
    virtual ~MyClass() { printf("Destroying MyClass...\n"); }

    void* operator new(size_t size)
    {
        printf("Newing MyClass...\n");
        void* p = ::new MyClass();
        printf("End of newing MyClass...\n");
        return p;
    }

    void operator delete(void* p)
    {
        printf("Deleting MyClass...\n");
        ::delete p;    // Why is the destructor not called here?
        printf("End of deleting MyClass...\n");
    }
}; …
Run Code Online (Sandbox Code Playgroud)

c++ delete-operator

16
推荐指数
2
解决办法
1253
查看次数

标签 统计

c++ ×1

delete-operator ×1