国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

圖片精選

主站蜘蛛池模板: 从江县| 中方县| 登封市| 眉山市| 贞丰县| 德昌县| 新乡县| 津市市| 北宁市| 卓资县| 中西区| 吉木乃县| 安西县| 织金县| 西乡县| 成安县| 泸定县| 韶关市| 虎林市| 诸暨市| 兴和县| 绥江县| 集安市| 团风县| 鄂托克前旗| 阿坝| 文成县| 蒙自县| 瑞安市| 偏关县| 定州市| 汤原县| 锦州市| 翁牛特旗| 信阳市| 抚州市| 平武县| 新平| 崇文区| 敖汉旗| 大渡口区|