這段c++代碼是移動操作嗎?
01-22
在看《c++程序設計語言》,看到這麼一段代碼:
這裡v2不是引用嗎,為什麼能把vs移動到v2?
不是,這段代碼編譯報error。
non-const lvalue reference只能綁定到左值。std::move的結果是xvalue。https://stackoverflow.com/questions/16493524/is-it-valid-to-bind-non-const-lvalue-references-to-rvalues-in-c-11modified
https://stackoverflow.com/questions/7189420/one-vs2010-bug-allowing-binding-non-const-reference-to-rvalue-without-even-a-w?rq=1更新一下:思維慣性想當然了,這個代碼是不對的,右值值不能綁定到左值引用
所以應該是打錯字了,多打了個
原答案:
move只是把對象轉型成右值引用,並不實際執行移動操作
然後右值引用和左值引用都是可以綁定給左值引用的
所以寫不寫move沒有區別
當然我覺得多半是v2多打了個
Move只是轉類型。。。
vector&
這樣是一樣的,
vector&
std::move used to indicate that an object t may be "moved from", i.e. allowing the efficient transfer of resources from t to another object.
然後vector又定義了移動構造函數
vector( vector other );
推薦閱讀:
※私自將書中函數代碼編寫出來放到網上分享侵權嗎?
※如何評價《自由軟體世界裡的「版權勒索」》?
※如果你不用殺毒軟體,能殺毒,弄木馬么?需要不靠軟體去殺毒殺木馬,需要什麼水平或者會什麼?
※如何只用16進位編輯器寫出hello_world.exe?
※許嵩寫代碼的水平如何?