關於右值引用的一些理解

2021-09-26 19:34:47 字數 322 閱讀 9312

右值引用之前看過不少次了,但過一段時間就忘了,這裡簡單整理一下我的理解

右值引用主要用來實現 移動語義 和 完美**

1. 移動語義

使用上可以用std::move() ,把引數強制轉換成右值

我理解就是和淺拷貝很像,不過淺拷貝是多個指標指向堆上的空間,可能會重複釋放從而出錯,而移動語義是只有乙個指標占有堆上的空間,移動後源指標就置空了.如果沒有堆上的空間,那移動語義和淺拷貝就沒什麼區別

2. 完美**

這個是在模板中,結合摺疊原則使用,實現"在函式模板中,完全按照模板引數的型別將引數傳遞給模板函式中呼叫的另乙個函式,並且不產生額外開銷。"

右值引用的一些測試

編譯 g std c 11 g fno elide constructors o0 test.cc o test fno elide constructors 用來關閉編譯器優化 include class a a 拷貝建構函式 a const a a value a.value 移動建構函式 a ...

關於C 的右值引用的一些看法

關於c 中的右值引用的詳細可以看這一批博文 從4行 看右值引用 那一篇博文詳細結合四行簡單的 詳細介紹了右值引用的使用方法和一些場景,非常實用。而本篇博文主要介紹一下我在學習右值引用的一些心得。因為在學習右值引用的時候,有一些地方非常難理解。所以寫下這一篇博文,防止遺忘,由於對於c 涉獵不多,所以有...

關於c 的 右值 右值引用 move

第一次接觸c move操作就懵逼了,一直想探個究竟,但是右值以及右值引用思考了好長時間,就是不得要領,今天終於有所收穫,寫下第一篇部落格,一方面為了幫助一些剛入門的朋友,另一方面也是幫助自己今後複習。左值是乙個持久的量,右值是乙個短暫的量。那怎麼算持久怎麼算短暫呢?取決於我的 裡有沒有乙個變數來儲存...