c函式返回值為引用型別時出錯大神進

2021-06-25 14:47:35 字數 706 閱讀 9626

1樓:匿名使用者

我不是大神,但我大概知道你是怎麼回事。

你的引數是const string&型別,首先你要知道string&前為什麼要加const. 還有你要知道const物件和非const物件的區別在**。

物件前加const, 則只能呼叫該物件的const方法,換句話說,不能對其進行任何內容上的修改。而傳&是因為要避免複製構造,所以引數為const string&.

那麼再來說說你的函式體內的這行**,首先word+ending將產生一個臨時物件,因為呼叫了string內部的string operator(const string& lhs, const string& rhs)函式。基於此,你的函式就不能返回引用。因為函式體內的臨時物件在函式出棧之後會被銷燬。

所以除非你取消+號,只返回某個引數。不然就不能返回引用!

接下來說說你的const問題。因為你的引數是const的,但是你返回的時候卻把const給取消了,返回了string&. 這是絕對不允許的。

你可以想象,const物件是對普通物件的一種限制,那麼由普通物件變成const物件,這種是允許的,因為限制沒有被放大。但是反過來,由一個const物件變成普通物件,你試圖放大這種限制就不被允許了。除非你使用c++提供的const_cast轉換!

2樓:匿名使用者

const string 不能繫結為string 引用,編譯器已經說的很明白了

c語言中函式返回型別和函式返回值

函式的返回值bai 通過return語句來執du行,即zhireturn後的變數或表示式的值dao 就為專該函式的返回值 你可以根屬據需要自定義返回什麼值 而返回值的型別是指該值你想要得到的型別,比如return a a的型別,你在函式體裡定義的是int a 但根據需要,你要的是一個float型的返...

c如何函式返回值,c如何函式返回值

返回值是右值 只能在等號右邊 可以用一個變數來接受收 函式也可以通過引用和指標來改變外部變數的值 c 中的返回值指的是什麼?首先,c語言中的函式有兩種形式 1 有返回值,2 無返回值。有返回值的函式會把內執行的結果 容也就是你寫這個函式的目的 返回到主函式中。沒有返回值的函式主要是為了完成某種任務 ...

關於C 函式返回值的問題,C 函式返回值問題

include class test public test int x 0 i x cout 新建的該物件的地址為 test cout 析構地址為 正確輸出,不過你的 確實認人匪姨所思 與實參的問題 以一個簡單的程式為例來說明 void mswapa int a,int b 這 兩個函式都是交換a...