Alt*_*fry 2 c++ reference constants function
例如,
void func(const int& a);
int main()
{
int b=1;
func(b*2);
}
Run Code Online (Sandbox Code Playgroud)
如果const int&会传递一个引用,那么如何才能b*2成为引用呢?
b*2那么这意味着它只传递to的副本func()?
但如果是这样,真的func(b)传递了 的引用b吗?
我对吗?
在这个例子&中确实表示一个引用,所以它必须引用一个实际的对象。
b*2在内存中创建一个临时 int对象(右值)。当语句func(b*2);完成时(即,当;到达时),该临时文件将被销毁。
当该语句func(b*2)仍在运行时,临时变量仍然存在。对 const 的引用可以绑定到临时/右值对象,这就是代码编译和运行良好的原因。
但是,非常量引用不能绑定到临时/右值,只能绑定到命名变量(左值)。因此,如果您删除const(ie void func(int& a)),则该语句func(b*2)将不再编译。
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |