c move的作用和用法

2021-09-06 20:29:48 字數 1108 閱讀 1733

參考

std::move會無條件將自己的引數轉換為右值。在物件拷貝的時候,在執行時,它們不會產生一行**, 可以減少資源建立和釋放。

//

// main.cpp

// move

//// created by 藍貓 on 2019/1/3.

///*

3. 為什麼要使用std::move

如果類x包含乙個指向某資源的指標,在左值語義下,類x的賦值建構函式如下:

複製**

x::x(const x& other)

複製**

應用**如下,其中,tmp被賦給a之後,便不再使用。

x tmp;

// ...經過一系列初始化...

x a = tmp;

如上,執行過程按照時間順序如下: 首先執行一次預設建構函式(tmp申請資源),再執行一次複製建構函式(a複製資源), 最後退出作用域時再執行一次析構函式(tmp釋放資源)。既然tmp遲早要被析構掉,在執行複製建構函式的時候,a能不能將tmp的資源「偷「」過來,直接為我所用?

x::x(const x& other)

這樣可以減少一次資源的建立和釋放。這就是std::move所要實現的。

空間的作用和用法

對於乙個使用者系統預設的會建立。temp undotabs user system這幾個表空間。那請問這幾個表空間各有什麼 作用呢?當學了oracle的人都會說。temp表空間是放處理的臨時資料的,比如排序操作。undotabs表空間是資料恢復時用到。user表空間是存班實資料的。但是大家有誰能真正...

Const 的作用和用法

const型別定義 指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令 常量必須被初始化 cons的作用 1 可以定義const常量 例如 const int max 100 int array max 2 便於進行型別檢查 例如 void f const int i 編譯器就會知道i是乙...

c 「 」的作用和用法

在看別人程式的時候偶爾看到,總結了一下兩個用途 1.不常用,也不推介用的用法。關鍵字 可以作為識別符號來使用,說白了,就是講關鍵字變成非關鍵字。2.逐字字串字面量,以 開頭,後面是由引導包含的字串。使用引導號包含的字串的內容原樣輸出,而且他們能夠跨越兩行或更多行。因此,可以加入新行,製表符等,而不需...