在以下情况下应该发生什么:
int functionA() {
return 25;
}
void functionB(const int& ref) {
cout << ref << endl;
}
void start() {
functionB(functionA());
}
编译此示例时,它输出正确的值25。这是如何工作的?当仅使用对它的引用时,是否应该删除(从堆栈中删除)堆栈上的引用返回值,还是行为未定义?
之所以如此“有效”是因为const int& ref
-当引用是const
(确保您不想更改它)时,编译器将在调用代码中生成一个临时对象(start
在您的情况下),然后将引用传递给该对象。
如果将const
其删除,则由于functionA
无法将的结果转换为引用,因此将无法编译。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句