传递函数的返回值作为参考

maxdev

在以下情况下应该发生什么:

int functionA() {
    return 25;
}

void functionB(const int& ref) {
    cout << ref << endl;
}

void start() {
    functionB(functionA());
}

编译此示例时,它输出正确的值25。这是如何工作的?当仅使用对它的引用时,是否应该删除(从堆栈中删除)堆栈上的引用返回值,还是行为未定义?

马特·彼得森(Mats Petersson)

之所以如此“有效”是因为const int& ref-当引用是const(确保您不想更改它)时,编译器将在调用代码中生成一个临时对象(start在您的情况下),然后将引用传递给该对象。

如果将const删除,则由于functionA无法将的结果转换为引用,因此将无法编译

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章