gpt4 book ai didi

c++ - 将非引用变量分配给返回引用的函数,反之亦然

转载 作者:行者123 更新时间:2023-11-30 04:07:51 26 4
gpt4 key购买 nike

虽然这可能是一个简单的问题,但我找不到答案可能是因为这些情况没有包含在您的标准按值传递和按引用传递教程中。我对这两个原则都很熟悉,但我无法准确指出编译器在以下两种情况下做了什么。我正在寻找关于在堆栈上何时编译器生成对象的任何拷贝而不是简单地分配地址的解释。

考虑以下函数:

int & foo();

a 不是按引用时会发生什么?

int a = foo(); // a is not int &

考虑下一个函数:

int bar();

b 被引用时会发生什么?

int & b = bar(); // bar is not by-reference

最佳答案

表达式 foo()bar() 的值都是 int 类型的值。前者是左值,后者是右值。当您使用 int a = foo();int a = bar() 时,本地对象变量 a 会使用该值进行初始化。当你说 int & b = foo() 时,局部引用变量 b 被绑定(bind)到右边的值(这是一个左值)。语句 int & b = bar() 无效,因为引用无法绑定(bind)到右值。

关于c++ - 将非引用变量分配给返回引用的函数,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183918/

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