【发布时间】:2020-09-05 21:54:16
【问题描述】:
const string& x = functionA();
functionB(x); // depends on x is string or const string&
string str = x;
我们有 const ref x:
传递给函数B,所以基本上我们复制x的值并传递给函数B? (不,取决于 x 是否参考)
将x赋值给str,所以这里我们也复制x的值?或者我们只是分配引用?
=========================
是的,我理解函数 B(x),它取决于传入的 x 是字符串还是字符串&。我现在的困惑仍然是关于作业的第二个问题。
如果我们有类似的东西:
obj.fieldA = x;
obj 已创建,我们只需将 x 分配给 obj 的 fieldA。那么这里的 x 是副本还是只是参考?
【问题讨论】:
-
需要看看
functionB是如何被声明来回答这个问题的。 -
如果 functionB 有作为参数“const string&”,则不会复制 afaik,因为您将 addr 传递给原始字符串。如果删除 ref,则该函数将进行复制。
标签: c++ reference variable-assignment