在C 默认指针参数上删除
is delete called on a c++ default pointer parameter
我具有一个函数,如果未与第二个参数一起提供默认情况下的指针。
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);
}
相关文章:
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- std::p ackaged_task 应该删除带有 const 参数的复制 c'tor
- Qt5 - 如何将"QList<T> *"指针作为信号参数传递,并在完成后将其删除?
- 编译器在C++中调用另一个函数时,在参数中查找已删除的构造函数
- 从函数参数包中删除最后一项
- 为什么没有为函数参数删除副本
- 删除 Netbeans 中的标准运行参数
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 是否允许删除以修改其参数
- 如何通过对象参数从指针矢量中删除对象和指针
- 简化可变参数模板:删除一些专用项
- 为什么删除默认参数会破坏此 constexpr 计数器?
- 使用自定义参数的过载删除操作员
- 如何查找/删除具有特定参数的结构向量的元素
- 带大小参数和不带大小参数的"运算符删除":当两者都可用时,选择哪一个?
- 如何从可变参数模板参数中删除元素
- 为什么make_tuple删除参数类型的引用
- 删除参数中带有字符串的文件
- 使用std::bind删除参数