c primer讀書筆記之c 11(四)

2022-05-28 02:03:12 字數 1468 閱讀 8768

相信大家都用過列舉量,都是不帶有作用域的,在標頭檔案中定義需要特別注意不要出現重名的情況。為了解決這種問題,c++11提供了帶作用於的列舉。可以使用class enumname定義,示例**如下:

enum

;enum

class color ;

上面的是沒有作用域的列舉定義形式,下面是帶有作用域的列舉定義形式,呼叫帶有作用域的列舉必須指定作用域,否則會編譯出錯。

還有乙個比較大的區別就是,帶有作用域的列舉量不能自動轉換為int型別,而沒有作用域的列舉量是可以的。

c++11針對列舉型別提供了宣告列舉型別占用位元組長度的機制,可在列舉名之後加上型別限定,**如下:

enum ctrltype: unsigned long

long

;

同時,c++11提供了列舉的前向宣告機制。如下**:

//

enum forward declaration

enum initvalues: long

long; //

unscoped, must specify a size

enum

class newcolor; //

default int

這個部分不是c++11新加的內容,只是個人感覺比較有趣和可用的定義形式。內部類的可以僅在外部類中宣告,而不需要直接給出定義式。示例**如下:

//

nested class

class

outerclass

;class

outerclass::innerclass

;

外部類outclass有點像命名空間的性質了。

有時候使用union,會存在乙個比較大的限制,所有的union成員必須沒有建構函式,因為共用體不知道如何初始化和反初始化。

在c++11中允許union定義包含帶有建構函式的成員,**如下:

//

union with class member

union uniontest

;

但是在使用的時候,我們必須維護union中的資料有效性,編譯器依然不知道如何構造和析構union中的變數。慎用!!

tuple是對pair的擴充套件,支援任意數目任意型別的多元組。多數用於多個資料合成乙個元素,但是又不想定義新的結構體或類的情況下。具體tuple的用於建議參考:

c++11中stl引入了隨機數生成器(random-number engine)和隨機數分配類(random-number distribution class),二者配合可以生成指定範圍、指定型別、指定分布的隨機數。

由於正規表示式,本人不是很熟悉,這裡不做介紹了。有興趣的可以閱讀下c++ primer ch 17.3或者c++11標準。

根據其他資料介紹,c++11也支援執行緒機制,可惜c++ primer中沒有介紹。後續可以參考下其他資料繼續完善下。

c primer讀書筆記之c 11(三)

class ctordfttype 使用 default限定符的建構函式,不需要實現,編譯器會自動生成預設的函式實現。如果需要禁止類物件間的複製或者賦值,傳統的做法是將複製建構函式和賦值運算子設定為private。c 11提供了的 delete限定符用於實現類似的功能,delete限定符可用於任何函...

c primer讀書筆記之c 11(一)

c 提供了使用typedef定義的別名機制,但是有時候很難理解。為了更好的使用別名機制,c 11提供了新的別名定義機制,類似 如下 alias declarations using vint int type alias using pint int pointer alias using rint...

C 11特性 《深入理解C 11 讀書筆記

新增關鍵字 struct alignas 32 colorvector 沒有alignas關鍵字的話,對齊到8位,加上的話,對齊到32位,能提公升效率。對齊的資料在讀寫上會有效能上的優勢。比如頻繁使用的資料如果與處理器的快取記憶體器大小對齊,有可能提高快取的效能。而資料不對齊可能造成一些不良的後果,...