|
|
1
4
如果您正在(通过包含头)编译一个重写的new/delete运算符,那么您的代码中所有调用new/delete都将使用它们。无法重新覆盖它(链接错误),或者只能部分覆盖它,等等。 重写全局新建/删除运算符是一种糟糕的形式。这是个坏主意。如果你不知道为什么这是个坏主意,你就没有资格这么做。如果你真的意识到这是个坏主意的原因,你就有资格这么做,但你通常会选择不这样做。 定义全局新建/删除在您希望人们直接包含到其项目中的组件中更糟糕。作为客户,您的工作是帮助供应商了解情况的严重性,或者停止成为他们的客户。 可以定义自定义分配器类型(请参见 link for a good tutorial 关于如何这样做,需要接口等),并将其专门用于STL类型(这是一个模板参数)。 对于共享的指针,您需要做一些不同的事情:如果您不希望使用默认的“delete p”行为,它将一个deleter对象作为构造函数的参数。这不是自定义分配器;它只是一个常规的一元函数。 |
|
|
2
2
这样做不可能:
那么,邪恶头声明为全局新建/删除的内容将变为邪恶::新建/邪恶::删除。但我怀疑,如果在邪恶的头中声明的东西有非头的定义,这将起到很好的作用。 |
|
|
3
1
您可以在命名空间中使用另一个新的:
然后可以使用所有STL类,将分配器类型作为模板参数。 |
|
|
4
0
一种选择是创建自己的重载新运算符,该运算符可以用malloc实现。 这可以定义为: enum MyNew {EMyNew};
void *operator new(size_t size, MyNew);
你可以这样称呼它
因为这是用malloc实现的,所以它应该按预期工作。唯一令人沮丧的是,你将不得不替换所有你使用过的新实例。 |
|
|
Noah Wilder · Swift中元组的操作符重载 8 年前 |
|
|
Salman · 指向具有数组索引运算符重载的类的指针 8 年前 |
|
|
Nom OnTheCookie · 使用向量重载C++输出 8 年前 |
|
|
J. Doe · C++重载:从友元函数切换到成员函数 8 年前 |
|
|
Ana · 使用操作符重载添加存储在vector中的类对象 8 年前 |
|
|
Matthew · 重载运算符|用于固定大小的阵列? 8 年前 |
|
|
Martin Žid · 重载运算符+=具有两个类 8 年前 |