我想按照 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/