簡體   English   中英

傳遞函數的返回值作為參考

[英]Passing return value of a function as reference

在以下情況中應該發生什么:

int functionA() {
    return 25;
}

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

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

編譯此示例時,它會輸出正確的值25.這是如何工作的? 當僅使用對它的引用時,不應該刪除堆棧上引用的返回值(從堆棧中刪除),還是行為未定義?

這“因為const int& ref而工作” - 當引用是const (保證你不想改變它),編譯器會在調用代碼中生成一個臨時對象( start你的情況start ),然后傳遞參考那個。

如果刪除const ,它將無法編譯,因為functionA的結果無法轉換為引用。

沒有“堆棧上的返回值”(更不用說“堆棧”): functionA 按值返回一個int ,因此表達式functionA()只是int類型的臨時值。 這個值綁定到functionB的常量引用,並且因為它的生命周期是完整表達式的生命周期,所以一切都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM