C ++:如果我重载了new运算符,是否也必须重载delete运算符?

时间:2018-09-04 02:56:15

标签: c++ new-operator dynamic-memory-allocation delete-operator

我正在阅读有关SO的问题,在answers之一中,它被提及为:

  

如果找不到明确的匹配解除分配功能,   传播异常不会导致对象的记忆被   释放。

因此,如果我只是重载我的new运算符而不是delete运算符,则将创建并调用任何默认的delete运算符;或者,我是否还必须显式编写delete运算符。

1 个答案:

答案 0 :(得分:8)

这意味着如果您用新的参数重载了new运算符,而不是使用了额外的参数重载了delete,那么如果构造函数中发生异常,则不会调用delete运算符。另一方面,如果您正在重载基本new(没有额外的参数),并且发生异常,则将调用不带额外参数的delete,如果您没有重载,它将是默认的运算符delete。 / p>