每个类重载new(),而不是全局重载
Overloading new() per class- rather than globally
我知道要重载全局新操作符,你可以这样做,所有类都会使用它:
void *operator new(size_t size){
if(void *mem = malloc(size)){
cout << "allocated memory" << endl;
return mem;
}
else{
throw bad_alloc();
}
}
但是我如何在每个类的基础上重载new()?那么,类X、Y和Z的new()的不同实现呢?
是的,只需声明为static
:
class X
{
static void *operator new(size_t size) {
if(void *mem = malloc(size)){
cout << "allocated memory" << endl;
return mem;
}
else{
throw bad_alloc();
}
}
};
我们完了。
相关文章:
- 重载运算符 new/new[] 删除/删除[] 全局C++
- 在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?
- 重载全局运算符新(非 POD)
- 全局删除的冲突重载
- 运算符重载:简单添加...错误 C2677:二进制"+":未找到采用类型 ___ 的全局运算符(或者不存在可接受的转换)
- 全局新运算符重载
- 为什么使用范围解析运算符会更改调用全局命名空间中的哪个重载模板?
- 如何为模板类的所有实例专用化或重载全局模板函数
- 误解全局运算符重载规则
- 在重载的全局new操作符中使用静态对象会导致核心转储运行时错误
- 为什么成员函数的重载解析排除全局函数
- 每个类重载new(),而不是全局重载
- 如果存在具有不同参数类型的重载,则在全局命名空间中找不到函数
- 全局重载 delete[] 未在第三方库中调用
- 如何重载全局new操作符
- 浮点数的==和!=的全局重载
- 在c++类中重载全局函数getline
- iostream插入器和提取器可以是类成员而不是全局重载吗?
- 在全局范围内重载std容器上的操作符是不好的风格吗?
- 在c++中重载全局new()调用之前未初始化全局静态变量