我正在读一个关于SO的问题,在一个answers中,它被提到:
如果找不到明确的匹配解除分配函数,则传播异常不会导致释放对象的内存。
所以,如果我只是重载我的new
运算符而不是delete
运算符,那么是否会创建并调用任何默认的delete
运算符;或者,我是否还必须明确地编写delete
运算符。
这意味着如果使用额外参数重载operator new,而不使用额外参数重写相应的delete,如果构造函数中发生异常,则不会调用delete运算符。另一方面,如果你正在重载基本的new(没有额外的参数),并且发生异常,那么将调用不带额外参数的delete,如果你没有重载它,那将是默认的operator delete。