在 MFC(Microsoft Foundation Classes)中,CObject 类也没有定义 operator new 运算符。operator new 通常用于动态分配内存,而 MFC 中的 CObject 并不是主要用于直接管理内存的类。

在 C++ 中,operator new 是一个全局的分配内存的操作符,而 operator delete 用于释放内存。这两个操作符通常是成对出现的。

MFC 中的 CObject 主要作为一个基类,提供了一些通用的功能,如运行时类型信息(RTTI)和序列化等,而不是用于直接进行内存分配和释放的目的。在 MFC 中,对于具体的对象,你更常见地会使用 new 运算符进行动态分配内存,然后使用 delete 运算符进行释放。

以下是一个简单的示例,演示了使用 new 和 delete 运算符在 MFC 中进行内存分配和释放:
#include <afx.h>  // 包含 MFC 头文件

class CMyObject : public CObject
{
public:
    // 构造函数
    CMyObject() {}

    // 其他成员函数...

    // 使用 new 运算符分配内存
    void* operator new(size_t size)
    {
        return ::operator new(size);
    }

    // 使用 delete 运算符释放内存
    void operator delete(void* ptr)
    {
        ::operator delete(ptr);
    }
};

int main()
{
    // 使用 new 运算符分配 CMyObject 对象的内存
    CMyObject* pObj = new CMyObject;

    // 使用 delete 运算符释放 CMyObject 对象的内存
    delete pObj;

    return 0;
}

在这个例子中,CMyObject 类重载了 operator new 和 operator delete 运算符,实际上只是调用了全局的 ::operator new 和 ::operator delete。这只是为了演示,实际上在 MFC 中你通常不需要为 CObject 类重载这些运算符,因为它通常是其他 MFC 类的基类,而这些类可能已经提供了适当的内存管理机制。


转载请注明出处:http://www.zyzy.cn/article/detail/20910/MFC/CObject