1. 程式人生 > 程式設計 >C++列舉型別用法總結(列舉字元常量代替常量)

C++列舉型別用法總結(列舉字元常量代替常量)

C++列舉型別enum表示列舉,通常用於定義個新型別的字元常量,比如enum {January,February,March}。列舉型別的作用域一般是整個檔案或者類內。當列舉型別定義在檔案開頭時,則作用域是從定義位置開始往後(不包括函式內定義);當列舉型別在類內定義時,則作用域為整個類內。在類內的標頭檔案定義和初始化列舉型別,當例項這個類的物件時,列舉型別不會佔用空間,只是包含一個字元常量而已。

列舉型別的定義可以在整個資料夾,也可以在類內。當在整個資料夾時,所有列舉量不能有相同的。當在類內時,不同類的列舉常量可以相同,不影響。下面給出具體程式碼示例。

一、列舉型別定義在類內(用的是vs2013 IDE)

1.1新建一個控制檯應用程式,然後在EnumTest.h,EnumTest.cpp,main.cpp中新增如下程式碼

EnumTest.h

#pragma once
typedef unsigned long Item;
 
class CEnumTest
{
public:
	CEnumTest();
	~CEnumTest();
 
	const void show() const;		//後面的const表示該函式不可更改類物件,也即是不能更改類物件的成員變數
private:
	enum {One=1,Two=2,Three=3};
 
	Item item[Three];
};

EnumTest.cpp

#include "EnumTest.h"
#include <iostream>
 
CEnumTest::CEnumTest()
{
}
 
const void CEnumTest::show() const
{
	std::cout <<"this->Three=="<<this->Three<<std::endl;
}
 
CEnumTest::~CEnumTest()
{
}

main.cpp

#include <iostream>
#include "EnumTest.h"	
 
int main()
{
	CEnumTest *enumTest = new CEnumTest();
	enumTest->show();
 
	system("pause");
	return true;
}

1.2輸出結果如下

C++列舉型別用法總結(列舉字元常量代替常量)

1.3總結

可以在類內用列舉定義多組字元常量,這些字元常量在類的標頭檔案中申明和賦值;雖然這些字元常量被賦值了,但是卻還是一個字元常量,而不是一個數值,一般列舉字元常量跟switch搭配使用。假如這些列舉字元常量被賦值給整形或者浮點型,則C++11新標準會自動轉換為對應型別,編譯器預設是用整形常量表示一個列舉型別字元常量的。

二、列舉類定義

列舉類的作用域同樣是在定義的類內,但是枚列舉類是專門為列舉建立的類,也就是說,只能用於列舉。

2.1宣告程式碼如下

enum class Data1{ First = 1,Second = 2,Third = 3 };
enum class Data2{ First = 7,Second = 8,Fourth = 9 };

2.2呼叫程式碼如下

#include <iostream>
#include "EnumTest.h"	
 
enum class Data1{ First = 1,Fourth = 9 };
 
int main()
{
	CEnumTest *enumTest = new CEnumTest();
	enumTest->show();
 
	/*列舉類*/
	std::cout << "(int)Data1::First==" << (int)Data1::First << std::endl;	//列舉類Data1可以直接用作用域解析運算子::呼叫對應列舉成員常量Data1::First
	std::cout << "(int)Data2::First==" << (int)Data2::First << std::endl;	//列舉類Data2可以直接用作用域解析運算子::呼叫對應列舉成員常量Data2::First
 
	system("pause");
	return true;
}

2.3輸出結果如下

C++列舉型別用法總結(列舉字元常量代替常量)

2.4總結

由上面結果可知,列舉類定義後,可以直接用作用域解析運算子::直接呼叫對應列舉類的成員常量Data1::First,可以當成一個常量來呼叫。

以前C語言列舉的常規呼叫就是在列舉類中去掉class就可以了,即下面程式碼

enum Data1{ First = 1,Third = 3 };

其它用法跟上面兩個基本一樣,就不介紹了。

參考內容:

《C++ Primer Plus》(第6版)中文版 372-373頁

以上就是C++列舉型別用法總結(列舉字元常量代替常量)的詳細內容,更多關於C++ 列舉的資料請關注我們其它相關文章!