c 11 新特性學習(1)

2022-10-09 01:12:09 字數 1236 閱讀 5661

1.原始字面量

在 c++11 中新增了定義原始字串的字面量,定義方式為:r 「***(原始字串)***」 其中()兩邊的字串可以省略。原始字面量 r 可以直接表示字串的實際含義,而不需要額外對字串做轉義或連線等操作。(如\n \t縮排這種)

比如:程式設計過程中,使用的字串中常帶有一些特殊字元,對於這些字元往往要做專門的處理,使用了原始字面量就可以輕鬆的解決這個問題了,比如列印路徑:

#include#include

using

namespace

std;

intmain()

在 c++11 之前如果乙個字串分別寫到了不同的行裡邊,需要加連線符,這種方式不僅繁瑣,還破壞了表示式的原始含義,如果使用原始字面量就變得簡單很多,很強直觀,可讀性強。

#include#include

using

namespace

std;

intmain()

2.指標空值型別

在 c++ 程式開發中,為了提高程式的健壯性,一般會在定義指標的同時完成初始化操作,或者在指標的指向尚未明確的情況下,都會給指標初始化為 null,避免產生野指標(沒有明確指向的指標,操作也這種指標極可能導致程式發生異常)。c++98/03 標準中,將乙個指標初始化為空指標的方式有 2 種:

char *ptr = 0

;char *ptr = null;

在老版c++中null就是零

出於相容性的考慮,c++11 標準並沒有對 null 的巨集定義做任何修改,而是另其爐灶,引入了乙個新的關鍵字 nullptr。nullptr 專用於初始化空型別指標,不同型別的指標變數都可以使用 nullptr 來初始化。

3.constexpr

在 c++11 之前只有 const 關鍵字,從功能上來說這個關鍵字有雙重語義:變數唯讀,修飾常量,舉乙個簡單的例子:

void func(const

intnum)

1).靜態陣列初始化的時候中要是常量

2).func(const int num)函式nun不是常量,只是在函式中不能修改它的值

定義常量用constexpr,定義唯讀用const

constexpr可以定義結構體物件

constexpr可以修飾函式(修飾返回值的)

1)宣告和定義要在main之上

2)修飾模板函式

C 11新特性學習

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

C 11 新特性 nullptr 學習

nullptr 出現的目的是為了替代 null。在某種意義上來說,傳統 c 會把 null 0 視為同一種東西,這取決於編譯器如何定義 null,有些編譯器會將 null 定義為 void 0 有些則會直接將其定義為 0。c 不允許直接將 void 隱式轉換到其他型別,但如果 null 被定義為 v...

C 11 帶來的新特性 (1)

vector error vector okvector okvoid f int void f void f 0 call f int f null 有歧義f nullptr call f void auto i 42 int double f auto d f double auto n err...