【发布时间】:2011-06-17 06:14:53
【问题描述】:
在我的代码中我有这个:
void f1(Obj*x){
if(x==0){return;}
...
}
void f2(Obj&x){
...
f1(&x);
...
}
void f3(Obj*x){
...
f2(*x);
...
delete x;
}
我不喜欢我将一个指针传递给 f3,然后将它的值作为引用传递,然后将地址作为指针传递。
如果f2也带指针更好?
【问题讨论】:
-
或者其他人最好参考一下。虽然更糟糕的是
delete声明,但它应该被包装起来。 -
不能全部通过引用吗?
-
f2 有一个约定,它永远不应该采用 NULL,所以在那里引用就可以了。它可能会修改对象,因此它需要非常量。 f1 允许您传递 NULL 并处理这种情况。
-
在示例中
f3和f1应该使用指针,因为前者拥有x的所有权,而后者接受NULL。
标签: c++ function pointers reference arguments