And*_*cco 5 c++ pointers const reference pass-by-reference
出于学习目的,我编写了以下代码:
void Swap(const int *&Pointer1, const int *&Pointer2)
{
const int *Tmp = Pointer2;
Pointer2 = Pointer1;
Pointer1 = Tmp;
}
Run Code Online (Sandbox Code Playgroud)
我对这段代码有一些疑问,以及在这种情况下顶级/低级constness如何工作,有3个或更多"级别".
如果你也想Pointer这样const,那就是int const * const & Pointer,让我们从右到左读;so是对指向 的指针Pointer的引用。(请注意,这意味着它本身和所指向的都不能更改。这可能会与 的意图相冲突。)并且在按引用传递时,这两个部分都不会被忽略。与按值传递不同,引用不能是顶级限定的,并且保留其所引用内容的常量限定。constconst intPointerintPointerSwapconstconst
您不能传递int *给函数const int *&(即对非常量指针的左值引用)。int *可以隐式转换为const int*,但转换后的值const int*是临时的,不能绑定到非常量的左值引用。Temporary 可以绑定到 const 的左值引用(或右值引用),因此将参数类型更改为int const * const & Pointer#1 中所述,传递int *就可以了。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |