void func(){
int a = 1;
int b = a; // copy assignemnt
int &c = a; // nothing?
int d = c; // nothing?
}
例如,当我们分配对 的引用c
时d
,是否触发了任何事情(移动、复制等)?
如果d
是实例成员怎么办?将局部变量引用存储到其中是否安全?
当我们将引用 c 分配给 d 时,是否触发了任何事情(移动、复制等)?
你的术语让我很困惑!如果您在谈论d
and c
,我假设您指的是int d = c;
我将其描述为“分配c
所指的任何内容d
”。“将引用 c 分配给 d”听起来太像int& c = d;
.
您的代码有:
int &c = a; // nothing?
int d = c; // nothing?
在第一行中,没有发生任何您需要关心的事情......c
可以被认为是 的昵称或别名a
。c
(在隐藏的实现级别,将图像作为自动取消引用的指针变量可能会或可能不会有帮助,并且您int &c = a;
类似于int* p_c = &a;
- 它不会复制或移动任何int
值,也不会a
以任何方式更改。)
在第二行中,为变量d
分配了来自 的值的副本a
。
如果 d 是实例成员怎么办?将局部变量引用存储到其中是否安全?
你在想这个错误的方式。当您分配给成员引用时,您分配给被引用的对象,而不是引用本身。被引用的对象将是另一个int
地方,从一个int
到另一个的分配照常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句