編輯:關於android開發
move語義和右值引用:
先參考: http://www.cnblogs.com/tingshuo/archive/2013/01/21/2870035.html
c++中臨時對象可能會大量存在,比如string/STL調用中。臨時對象中的資源(buffer或者字符串)會隨著臨時對象的析構而消失,所以一般會在對象析構前把它們(資源)拷貝出來,而不會直接引用這些資源,否則會野指針。
其實,既然已經是臨時對象了,馬上就會被析構掉,所以趕在析構前改一下裡面的內容也不會帶來太多負面影響,當然是在控制良好的前提下。基於這個思路,我們可以放心大膽的直接引用臨時對象中的資源指針(比如指針賦值,引用該資源),然後把它置空(防止被臨時對象釋放掉,囧),或者更屌一點的,把我們意圖釋放的指針,直接賦值給臨時對象的該指針,借助臨時對象在析構時會釋放它的資源的時機,把我們想釋放的東西給釋放掉!
多麼精妙!
在c11之前,臨時對象只能以 const MyClass& my_object 這種方式傳遞,有const在,所以臨時對象是不能被修改的。但是c11引入了右值引用 MyClass&&,導致我們可以修改臨時變量了!
假如你是函數的提供者,你提供了帶右值引用的參數,那麼,你就大膽的去引用它的資源,修改它的資源吧,不用擔心它還會被使用到,當函數返回之後。因為它是右值引用,該函數的調用者會保證這個參數不會再被使用到。
假如你是函數的調用者,當你發現你有一個左值對象my_object即將不再被使用到了,就可以用move語義把它轉成右值引用丟給函數,任函數去修改它的內容無所謂,因為你確定它不再被使用了(如果你確定不了,那就不能使用move語義)。當然,假如你處理的已經是右值了(比如函數返回值),那就跟以前沒什麼兩樣。
Android Activity 詳述 activity類處於android.app包中,繼承關系: extends ContextThemeWrapper impl
Android簽名機制之---簽名過程詳解 一、前言 又是過了好長時間,沒寫文章的雙手都有點難受了。今天是聖誕節,還是得上班。因為前幾天有一個之前的同事,在申請微信SDK
AndroidAnnnotations注入框架使用之Injection標簽詳解(十) (一).前言: 前面我們已經對於AndroidAnnot
Android消息機制入門,android機制入門接著處理《Android 網絡圖片查看器》中出現的問題 使用添加子線程,修改原程序: package com.wuyu