C++中的enum淺談
一、基本語法
1.1 基本的列舉定義形式
#include <iostream>
using namespace std;
enum Weekend{ //定義星期的列舉
Monday = 1,
Thuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
};
int main() {
cout << Weekend::Monday << endl; //使用形式一
cout << Thuesday << endl; //使用形式二
Weekend weekend= Weekend::Wednesday; //weekend 仍然為列舉型別
// weekend = 3; //error, weekend 不是變數,仍然為列舉型別
cout << weekend<< endl;
return 0;
}
//輸出
1
2
3
1.2 類中的列舉定義形式
#include <iostream>
using namespace std;
class TestEnum {
public:
enum Weekend {
Monday = 1,
Thuesday, //編號會自動加一
Wednesday,
Thursday ,
Friday,
Saturday,
Sunday
};
void func(Weekend weekend) {
switch (weekend)
{
case Monday:
cout << Monday << endl;
break;
case Thuesday:
cout << Thuesday << endl;
break;
case Wednesday:
cout << Wednesday << endl;
break;
case Thursday:
cout << Thursday << endl;
break;
case Friday:
cout << Friday << endl;
break;
case Saturday:
cout << Saturday << endl;
break;
case Sunday:
cout << Sunday << endl;
break;
}
}
};
int main() {
cout << TestEnum::Weekend::Monday << endl; //使用::操作符獲得類中的列舉
cout << TestEnum::Thuesday << endl;
TestEnum test;
test.func(TestEnum::Thursday); //可以將列舉型別當做函式的引數
return 0;
}
//輸出
1
2
4
二、列舉的優勢
- 避免書寫程式碼時候產生不可思議的數,如上面的程式碼我們可以通過使用列舉中的Monday來替代程式碼中的“1”,從而使得程式碼更具有可讀性。
- 列舉不是變數,因此其不會佔用記憶體,同時也可以用作陣列的下標等其他地方如int s[Thuesday]。
- 在函式的引數中使用列舉可以很好的限制使用者的輸入。如
func(Weekend weekend)
可以使得輸入的引數在期望的範圍內。
相關文章
- C++ string (淺談)C++
- C/C++:enum的理解 / enum與int的相互轉換C++
- 淺談JavaScript中的thisJavaScript
- 淺談java中的反射Java反射
- 淺談react 中的 this 指向React
- 淺談Java中的HashmapJavaHashMap
- 淺談React中的diffReact
- 淺談JavaScript中的介面JavaScript
- 談談 C++ STL 中的迭代器C++
- 談談C++中的swap函式C++函式
- 再談java列舉enumJava
- 淺談jQuery中的工具方法jQuery
- 淺談CSS中的Position(定位)CSS
- 淺談JavaScript中的繼承JavaScript繼承
- 淺談 Java 中 this 的使用(轉)Java
- 小心 Enum Parse 中的坑
- 深入掌握Java中的enumJava
- C#中Enum的用法C#
- 淺談Kotlin中的函式Kotlin函式
- 淺談Swift中的函式式Swift函式
- 淺談 js 中的 this 指向問題JS
- 淺談Rowid中的行號
- 淺談Java中的內部類Java
- 淺談Golang中select的用法Golang
- 淺談 Swift 中的屬性(PropertySwift
- 淺談java中的併發控制Java
- 淺談python中的xpath用法Python
- 淺談Javascript中的作用域鏈JavaScript
- 淺談 Swift 中的屬性(Property)Swift
- 淺談RAC中的負載均衡負載
- 淺談C++物理設計:實用巨集C++
- 淺談Java中的淺拷貝和深拷貝Java
- 淺談Java、PHP、C++程式設計的優缺點JavaPHPC++程式設計
- 淺談 PHP 中異常類的使用PHP
- 淺談js中的正規表示式JS
- 淺談node.js中的stream(流)Node.js
- 淺談SQL Server中的快照問題SQLServer
- MySQL中int、char、varchar的效能淺談MySql