日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++枚举类型(二) c++11 枚举类

發布時間:2025/4/5 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++枚举类型(二) c++11 枚举类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++11 標準中引入了“枚舉類”(enum class),可以較好地解決如下問題。

新的enum的作用域不在是全局的
不能隱式轉換成其他類型
/*** @brief 上述如果 using namespace Color 后,前綴還可以省去,使得代碼簡化。* 不過,因為命名空間是可以隨后被擴充內容的,所以它提供的作用域封閉性不高。* 在大項目中,還是有可能不同人給不同的東西起同樣的枚舉類型名。* 更“有效”的辦法是用一個類或結構體來限定其作用域。** 定義新變量的方法和上面命名空間的相同。* 不過這樣就不用擔心類在別處被修改內容。* 這里用結構體而非類,一是因為本身希望這些常量可以公開訪問,* 二是因為它只包含數據沒有成員函數。*/ #include <iostream> using namespace std; /*** @brief namespace解決作用域不受限*/ namespace Color {enum Type{RED=15,YELLOW,BLUE}; };struct Color1 {enum Type{RED=102,YELLOW,BLUE}; };/*** @brief C++11的枚舉類* 下面等價于enum class Color2:int*/ enum class Color2 {RED=2,YELLOW,BLUE };enum class Color3:char; // 前向聲明// 定義 enum class Color3:char {RED='r',BLUE };int main() {// 定義新的枚舉變量Color::Type c = Color::RED;cout<<"c="<<c<<endl;/*** 上述的另一種方法:* using namespace Color; // 定義新的枚舉變量* Type c = RED;*/Color1 c1;cout<<c1.RED<<endl;Color1::Type c11 = Color1::BLUE;cout<<c11<<endl;Color2 c2 = Color2::RED;cout << static_cast<int>(c2) << endl;Color2 cc2 = Color2::BLUE;cout<< "cc2="<< static_cast<int>(cc2)<<endl;char c4 = static_cast<char>(Color3::RED);cout<<c4<<endl;char c3 = static_cast<char>(Color3::BLUE);cout<<c3<<endl;return 0; } c=15 102 104 2 cc2=4 r s

總結

以上是生活随笔為你收集整理的c++枚举类型(二) c++11 枚举类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。