iMa*_*ial 2 c++ variables const reference
我目前正在阅读c ++ Primer,在其中一个练习中,它显示了两种类型的引用初始化,一种是const而一种不是,而在一次const中,引用指向0 ..我认为引用只能指向对象!
int i = -1, &r = 0; // illegal, r must refer to an object.
const int i = -1, &r = 0; // legal.
Run Code Online (Sandbox Code Playgroud)
所以第一个,int变量i是-1.然后int引用r引用0,这是无效的,getcha
现在在第二个,const int i = -1,然后const引用r = 0 ..怎么样?
我知道引用不能是const,const是引用引用的内容,本书说const引用可以引用const和非const对象(相同类型).这仍然无法解释为什么它可以指向0,这根本不是一个对象.
我不确定第二个陈述是如何有效的,有人请解释一下!
在
const int &r = 0;
Run Code Online (Sandbox Code Playgroud)
创建一个值为0的临时对象,然后r绑定到该对象.这是允许的,因为允许const引用绑定到右值.它也适用于右值参考:
int&& r = 0; // ok
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,int&因为int&变量只能绑定到左值.
请注意,引用绑定到的临时对象将一直存在,直到引用超出范围.请参阅https://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |