相信大家都用過列舉量,都是不帶有作用域的,在標頭檔案中定義需要特別注意不要出現重名的情況。為了解決這種問題,c++11提供了帶作用於的列舉。可以使用class enumname定義,示例**如下:
enum;enum
class color ;
上面的是沒有作用域的列舉定義形式,下面是帶有作用域的列舉定義形式,呼叫帶有作用域的列舉必須指定作用域,否則會編譯出錯。
還有乙個比較大的區別就是,帶有作用域的列舉量不能自動轉換為int型別,而沒有作用域的列舉量是可以的。
c++11針對列舉型別提供了宣告列舉型別占用位元組長度的機制,可在列舉名之後加上型別限定,**如下:
enum ctrltype: unsigned longlong
;
同時,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位,能提公升效率。對齊的資料在讀寫上會有效能上的優勢。比如頻繁使用的資料如果與處理器的快取記憶體器大小對齊,有可能提高快取的效能。而資料不對齊可能造成一些不良的後果,...