C 11學習筆記(3) enum

2021-06-12 10:23:09 字數 927 閱讀 3694

以往的enum型別將列舉成員的作用域暴露在列舉變數之外,使用者不需要指定列舉型別就可以直接使用列舉的內容,這就有可能會造成名字的衝突,為了解決該你問題,c++11引入了強型別的列舉型別(strongly typed enums ).

#include "stdafx.h"

#include using namespace std;

enum oldenum

;int _tmain(int argc, _tchar* argv)

;enum oldenum2

;int _tmain(int argc, _tchar* argv)

oldenum 和 oldenum2 都定義了列舉成員 second,在使用時由於不需要名字的限定,編譯器無法知道具體使用哪乙個列舉成員,會產生編譯錯誤。

強型別enum資料型別在定義時和舊風格不同,需要新增 class 關鍵字。

#include "stdafx.h"

#include using namespace std;

enum class strongtypeenum

;enum class strongtypeenum2

;int _tmain(int argc, _tchar* argv)

system("pause");

return 0;

}

由上述示例可以看出強型別列舉的新特性:

(1)使用enum class 進行定義

(2)避免了名字衝突,strongtypeenum 和 strongtypeenum2都定義了成員 second,但是由於各屬於各自的空間,不會造成名字衝突

(3)使用列舉成員必須通過名字的限定

(4)列舉變數不能轉換為整型

(5)不同的列舉變數之間不能互相賦值。

c 11學習筆記

c 98的 std auto ptr已經被徹底遺棄了,取而代之的是unique ptr shared ptr與weak ptr。大部分時候我們自己手動申請記憶體方式記憶體都是沒有問題的,問題是如果程式很大了之後,乙個複雜的物件,多次拷貝的代價非常高,很多地方都會使用到,只存在乙份拷貝顯然是最好的,這...

C 11 強型別列舉(enum)

c 11之前的enum型別是繼承c的,不溫不火 c 11對enum動刀了,加強了型別檢查,推出強型別enum型別,眼前一亮 使用過qt 的都知道,早就應該這麼做了,用的很爽!一 c中enum型別的侷限 1 非強型別作用域 enum type1 enum type2 問題來了,兩種列舉型別都有a列舉常...

C 11學習筆記 Type Support

其實主要還是對c 的std庫的學習吧,雖然用的不少但是對c 的全貌還不太了解。主要包括3個部分 基本型別 rtti 萃取技術 traits size t 用的太多了,不說了。ptrdiff t 乙個有符號的型別,通常用來表示兩個指標相減的結果,是乙個機器相關的型別。和size t不同的是,size ...