我正在阅读,我看到了以下代码:
template <>
inline bool is_empty(const char* const& x)
{
return x==0 || *x==0;
}
const char* const& x
是什么意思?
我尝试了以下代码来理解它:
void f(const char* const& x)
{
// whatever
}
void main()
{
char a = 'z';
char &j = a;
f(a);//error
f(*a);//error
f(&a);//fine
f(j);//error
f(&j);//fine
f('z');//error
}
它仅适用于 f(&a)
和 f(&j)
。
const char* const& x
是什么意思?
原文由 MEMS 发布,翻译遵循 CC BY-SA 4.0 许可协议
指针引用正是它所说的,对指针的引用。
考虑一下我们对引用的了解。 C++ 中的引用是指在别处引用现有变量的变量:
还要考虑我们对指针的了解。指针指向内存中的另一个对象:
因此,在您的情况下,您实际上拥有的是对指针的引用!
在上面的示例中,更改 ptrRef 会更新 _指针_,但不会更新值。
这是一个更完整的示例:
在上面的示例中,我们通过引用将
myPtr
传递给ChangePointer
以便可以通过函数对其进行修改。如果我们不通过引用传递,函数内部所做的任何更改都将丢失。在您的情况下,您正在传递对 const 指针的引用。这大约相当于:
在您的情况下,您传递的是一个指针,而不是一个对象。
不过,通过引用传递 const 指针似乎有点多余。指针不能更改(它是 const),并且通过引用传递指针没有任何好处(对于像指针和整数这样的小对象,通过引用传递并不比按值传递更有效)。我不想猜测为什么在你的情况下这样做。