c++ - 在覆盖新运算符时传递更多参数(C++)

标签 c++ overriding operator-keyword

我想按照 http://www.cprogramming.com/tutorial/operator_new.html 中的说明覆盖 C++ 中的新运算符

    class CMyclass
    {
    public:
           CMyClass(BOOL bUseWhichMemManager);
            void* operator new(size_t);
            void operator delete(void*);
    };

我创建了两个名为 CMemManager1 和 CMemMangaer2 的内存管理器,使用不同的算法来分配缓冲区。现在我想控制在调用 new 时使用哪个内存管理器。

我尝试向构造函数添加一个参数 bUseWhichMemManager,但是在重写的新函数中,无法访问该参数。有没有办法传递更多的参数给new operator,比如:

    void* operator new(size_t size, BOOL bUseWhichManager);

谢谢

最佳答案

您可以像这样在 new 表达式 中将参数传递给分配函数( operator new):

new (b) CMyClass // passes "b" to "bUseWhichManager"

假设您将 operator new 声明为 CMyClass 的成员,如您的问题所示:

void* operator new(size_t size, BOOL bUseWhichManager);

(不要将参数放在构造函数中,因为它可能没有意义。)

关于c++ - 在覆盖新运算符时传递更多参数(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943831/

相关文章:

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c# - 如何正确地覆盖平等?

c++重载运算符<<以插入更多对象

c# - 关于C#中的新修饰符

c++ - 在 C++ 中格式化输出

c++ - 对象引用如何作为 bool 表达式工作?

python - 模型使用时覆盖 Django 中的设置

pointers - Go 中的方法重写

c++ - 使用自动引用类在 C++ 中创建堆栈时出现问题

c# - 为什么 C# 调用错误的重载?