国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中rvalue和lvalue詳悉

2019-11-06 06:40:07
字體:
來源:轉載
供稿:網友

以下內容是參考書籍以及晚上的內容,整理而成,僅供參考~~

lvalue和rvalue

在計算機的遠古時代,變量的lvalue和rvalue是指:lvalue:變量在內存中的位置。通過它能夠找到內存中存放的變量(location value);rvalue:存放在lvalue對應的內存中的東西(register value);C++中的每個表達式要么是lvalue要么是rvalue。lvalue表示一個內存位置,而rvalue表示計算表達式的結果。rvalue引用是對有名稱變量的引用,并允許變量表示的內存通過lvalue引用來訪問。rvalue引用是對包含表達式結果的內存位置的引用。

lvalue引用:

使用lvalue引用形參,可以編寫直接訪問調用者實參的函數,避免了按值傳遞中的隱式復制。若不修改實參,只需要給lvalue引用類型使用const修飾符,以避免意外修改參數。無論是按值傳遞、按址傳遞參數或引用都是編譯器的規則,我們需要熟悉參數在不同情況下的傳遞,好的理解方式就是輸出地址來觀察。

#include <iostream>    using namespace std;void add_1(int & num){	num += 1;}int main(){	int v = 6;	add_1(v);	cout <<"v="<< v << endl;	return 0;}輸出結果:v=7.

rvalue引用:

首先,舉一個報錯的例子:
#include <iostream>    using namespace std;void add_1(int && num){	num += 1;}int main(){	int v = 6;	add_1(v);	cout << "v="<<v << endl;	return 0;}編譯會報錯: 無法將左值綁定到右值引用。因為:lvalue不能通過rvalue引用,有rvalue引用形參的函數只能通過rvalue實參來調用,后面列舉正確編譯的例子:
#include <iostream>    using namespace std;void add_1(int && num){	num += 1;	cout << "num=" << num << endl;}int main(){	int v = 6;	int s = 4;	add_1(v+s);	cout << "v="<<v << endl;	return 0;}運行結果:num=11,v=6.參考:

http://blog.chinaunix.net/uid-7471615-id-83794.html

http://blog.csdn.net/rogerhe/article/details/6410993 

http://www.cnblogs.com/yunqie/p/5892252.html 


上一篇:c++語言中類型的轉換

下一篇:c++作業2

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宝坻区| 探索| 青川县| 荣昌县| 历史| 蒙自县| 新和县| 略阳县| 友谊县| 凤城市| 郁南县| 望江县| 华坪县| 翁牛特旗| 恩施市| 陆川县| 滁州市| 忻州市| 高阳县| 达日县| 聂拉木县| 康乐县| 准格尔旗| 攀枝花市| 唐河县| 南投市| 大竹县| 北海市| 察雅县| 徐汇区| 望城县| 溆浦县| 屏山县| 青岛市| 浦东新区| 青海省| 沾化县| 湘潭市| 乐至县| 调兵山市| 鹤壁市|