C++之invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’
生活随笔
收集整理的這篇文章主要介紹了
C++之invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、看代碼
2、編譯結果
3、分析和解決
就拿f(a + b)來說,a+b的值會存在一個臨時變量中,當把這個臨時變量傳給f時,由于f的聲明中,參數是int&,不是常量引用,因為c++編譯器的一個關于語義的限制。如果一個參數是以非const引用傳入,c++編譯器就有理由認為程序員會在函數中修改這個值,并且這個被修改的引用在函數返回后要發揮作用。但如果你把一個臨時變量當作非const引用參數傳進來,由于臨時變量的特殊性,程序員并不能操作臨時變量,而且臨時變量隨時可能被釋放掉,所以,一般說來,修改一個臨時變量是毫無意義的,據此,c++編譯器加入了臨時變量不能作為非const引用的這個語義限制。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C++之invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++编译出现binding ‘cons
- 下一篇: C++之‘malloc’ was not