将引用参数传递给value参数

时间:2015-01-11 14:28:40

标签: c++ pointers reference

忽略可能在下面的C ++代码中完成的任何编译器优化,

void f(int n) {
    n += 1;
}

void g(int &n) {
    f(n);
}

相当于

void f(int n) {
    n += 1;
}

void g(int *n) {
    f(*n);
}

因此,在使用引用参数时,可以在不明显可见的位置创建静态值副本吗?

EDIT 我在询问是否可以使用引用参数创建实际值副本。当在第二种情况下使用指针时,我明确地取消引用指针传递值,但是使用引用参数有时会隐式地解除引用吗?是我的问题。

1 个答案:

答案 0 :(得分:0)

  

我在询问是否可以使用引用参数创建实际值副本。

绝对。它作为参考的事实是无关紧要的。你可以像它引用的对象一样对待它。

  

当在第二种情况下使用指针时,我明确地取消引用指针传递值,但是使用引用参数有时会隐式地解除引用吗?

您将引用视为某种隐藏指针。这个术语在这里并没有什么帮助。 "解引用"你是指针,而不是参考。事实上,该标准已经改为使用"执行间接"而不是" dereference"帮助澄清这一点。关键是,引用不被解除引用,因为这不是发生的事情 - 你只是复制被引用的对象。