C 標準庫 C 11新特性

2022-06-26 16:45:16 字數 1472 閱讀 7529

c++定義了nullptr以取代0或者null。nullptr是std::nullptr_t型別的(constexpr)變數。std::nullptr_t可以顯式或隱式地轉換為任何指標(包括類的成員函式指標),但不能顯式或隱式地轉換為任何其他型別。

range based for迴圈

類似於別的語言中的foreach迴圈

template void printelement(const t& coll) //

列印集合內所有元素

}

與move相對的就是copy。眾所周知,c++的變數都是「值語義」的。所謂的值語義的變數,就是它的行為跟int型別是一樣的,典型表現就是作為引數傳入函式中需要再複製乙個作為形式引數,它的變化不會影響到原來的變數。 這樣就會造成多次沒有意義的copy,即損失了時間又損失了記憶體。

move是將物件的狀態和所有權從乙個物件轉移到另乙個物件,只是轉移,沒有記憶體的搬遷或者記憶體的拷貝。

c++中move()可實現所有權的轉移

string s1 = "";

string s2 = "

banana";

s1 = move(s2); //

s1=="banana"

vectorv1;

vector

v2 = ;

v1 = move(v2); //

v1=

轉移之後的狀態為「仍然有效,但狀態不明」。

類似於其它程式語言中的foreach迴圈。

template //

列印集合內所有元素

void printelements(const t&coll)

}

raw string以r"(開頭,以)"結尾

如果要在raw string內輸出)",可以使用定義符,因此乙個完整的語法是r"delim(...)delim",其中delim為乙個字串行,最多16個基本字元,不可包含反斜線、空格和小括號。

noexcept關鍵字用於指明某個函式無法或者不打算丟擲異常。

常量表示式是指不會改變並且在編譯過程中就能得到計算結果的表示式

constexprint square(int

x)int

main()

c 11標準的新特性

c 引入了很多新特性,我這裡列舉了一些我覺得很好的特性.後續可能再補充其它.目錄當我們想讓編譯器生成預設的建構函式或賦值運算子時,我們可以使用default關鍵字指示編譯器生成.要注意幾點 delete關鍵字指示哪些函式是刪除掉的,不能使用.應用場景 例如實現單例時,會把建構函式宣告為private...

C 11新特性學習

lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...

C 11 新特性試用

在c 11之前,auto關鍵字用來指定儲存期。在新標準中,它的功能變為型別推斷。auto現在成了乙個型別的佔位符,通知編譯器去根據初始化 推斷所宣告變數的真實型別。各種作用域內宣告變數都可以用到它。例如,名空間中,程式塊中,或是for迴圈的初始化語句中。auto i 42 i is an int a...