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