gpt4 book ai didi

c++ - reference 和 const reference 作为函数参数的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:06 30 4
gpt4 key购买 nike

这是一段简单的 C++ 代码:

A foo(){
A a; // create a local A object
return a;
}

void bar(const A & a_r){

}

bar(foo());

为什么函数 bar 的参数必须是一个 const 引用,而不仅仅是一个引用?

Edit1:我知道引用是为了避免复制开销。 const 是只读的。但在这里我必须使它成为一个常量引用,否则如果我删除“const”,g++ 将向我抛出一个错误。

Edit2:我的猜测是foo()的返回对象是一个临时对象,不允许改变临时对象的值?

最佳答案

如果没有错误消息,我不确定编译器可能会提示什么,但我可以从逻辑上解释原因:

行内:

bar(foo()); 

foo()的返回值是一个临时的A;它是通过调用 foo() 创建的,然后在 bar() 返回后立即销毁。执行非常量操作(即更改临时 A 的操作)没有意义,因为对象 A 会立即被破坏。

再看一点,这是这个问题的虚拟拷贝:

How come a non-const reference cannot bind to a temporary object?

有一个很好的答案。

关于c++ - reference 和 const reference 作为函数参数的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719818/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com