同时用引用和指针可以吗?
见到一个这样的声明
int *&a;
这是什么意思?
a 是一个 指向 int* 的引用。
你可以了解一下右左法则,读复杂类型声明(当然,这个int*& a还是很简单的)靠这个法则屡试不爽。
Exercise:
解读一下这个类型 int(**(int, int))(int)
一般情况下,我能想到的合理用途只有一种,就是对于堆对象需要释放后置为空指针的safe free,举一个最简单的例子:
void SafeFree(T*& p)
{
if(!p) return;
delete p;
p = nullptr;
}
要用到指针的引用,说明你要修改指针本身的值,也即是它指向的地址,并且在引用作用域结束后还可能继续使用它。因此除了safe free这种用法,其他的行为我以为都是存在隐患即不安全的,十分不推荐。
作者:匿名用户
链接:https://www.zhihu.com/question/275546953/answer/391760219
来源:知乎