【发布时间】:2021-06-25 10:02:18
【问题描述】:
关于const 参考(参考 const)存在许多问题。但是当有隐式转换时,const 引用也会导致一个新地址。我在下面写了这个例子:
int i = 42;
double d = 4.2;
const int& ri1 = i;
const int& ri2 = d;
&ri1 和 &i 会打印相同的地址,但是 &ri2 和 &d 是不同的。 ri2 真正服务的对象是什么?正如“C++ Primer”所说,它会生成一个临时对象。但是如果转换后的 const 引用使用了不同的地址,这意味着这个地址仍然有一个有效的对象。
假设我有一个很长的string 或const char* 作为“长示例文本”并将其传递给某个接受const string& 的函数,会有类似的转换。
【问题讨论】:
-
const int& ri2 = d;会创建一个临时的int,并延长生命周期。
标签: c++ memory-management const-reference