在C 默认指针参数上删除

  • 本文关键字:删除 参数 指针 默认 c++
  • 更新时间 :
  • 英文 :


我具有一个函数,如果未与第二个参数一起提供默认情况下的指针。

void doSomething(int a, Obj* obj = new Obj()) {
...
}

如果要发布OBJ,我是否需要在功能中调用明确删除,或者如果我从默认参数值实例化指针时会自动完成?

我想避免自行删除明确的删除,因为如果通过第二个参数,我不想删除呼叫者传递的指针。

听起来您的内存所有权语义需要返工。在某些情况下,您拥有记忆和其他人。如果您坚持默认创建Obj的实例,则还接受一个布尔值,该布尔值指示您是否拥有内存。最终,我实际上建议您使用过载来完成此操作,其中一个函数需要一个参数,另一个函数为另一个函数。只接受一个人的一个将创建Obj的实例,然后调用您的基本doSomething函数。

类似:

void doSomething(int a, Obj* obj) {
...
}
void doSomething(int a) {
   Obj tmp;
   doSomething(a, &tmp);
}

最新更新