iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Software Development

C++ 實務基礎經驗系列 第 20

資源管理 右值

  • 分享至 

  • xImage
  •  

資源管理 右值

C++11多了右值引用,今天就來介紹一下右值是什麼囉

右值

右值最直觀的解釋就是等號的右邊,最多一點定義就是沒法取位址

int a = 1; // 1為右值,&取址運算無法取1的位址

move

move的功能就是能把左值轉為右值,參考以下例子

int tmp = 5;
// C++ 右值引用是&&,可以指向右值,不可指向左值
int &&ref_tmp = move(tmp); // move將左值轉成右值
// 都是輸出5
cout << tmp << endl; 
cout << ref_tmp << endl;

move除了上面提到轉換功能外,主要應用場景是避免拷貝、提升性能,參考以下例子

vector<string> vec;
string text1 = "abc";

vec.push_back(text1);  // 一般用法,會拷貝資料
vec.push_back(move(text1));  // 透過move,可以避免拷貝,但str1就會變空字串
// 變成空字串
cout << "text1: " << text1 << endl;

參考

一文读懂C++右值引用和std::move


上一篇
資源管理 智慧指針
下一篇
資源管理 內存洩漏
系列文
C++ 實務基礎經驗25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言