C++枚舉類型用法總結(jié)(枚舉字符常量代替常量)
C++枚舉類型enum表示枚舉,通常用于定義個新類型的字符常量,比如enum {January,February,March}。枚舉類型的作用域一般是整個文件或者類內(nèi)。當(dāng)枚舉類型定義在文件開頭時,則作用域是從定義位置開始往后(不包括函數(shù)內(nèi)定義);當(dāng)枚舉類型在類內(nèi)定義時,則作用域為整個類內(nèi)。在類內(nèi)的頭文件定義和初始化枚舉類型,當(dāng)實例這個類的對象時,枚舉類型不會占用空間,只是包含一個字符常量而已。
枚舉類型的定義可以在整個文件夾,也可以在類內(nèi)。當(dāng)在整個文件夾時,所有枚舉量不能有相同的。當(dāng)在類內(nèi)時,不同類的枚舉常量可以相同,不影響。下面給出具體代碼示例。
一、枚舉類型定義在類內(nèi)(用的是vs2013 IDE)
1.1新建一個控制臺應(yīng)用程序,然后在EnumTest.h,EnumTest.cpp,main.cpp中添加如下代碼
EnumTest.h
#pragma once typedef unsigned long Item; class CEnumTest { public: CEnumTest(); ~CEnumTest(); const void show() const; //后面的const表示該函數(shù)不可更改類對象,也即是不能更改類對象的成員變量 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輸出結(jié)果如下
1.3總結(jié)
可以在類內(nèi)用枚舉定義多組字符常量,這些字符常量在類的頭文件中申明和賦值;雖然這些字符常量被賦值了,但是卻還是一個字符常量,而不是一個數(shù)值,一般枚舉字符常量跟switch搭配使用。假如這些枚舉字符常量被賦值給整形或者浮點型,則C++11新標(biāo)準(zhǔn)會自動轉(zhuǎn)換為對應(yīng)類型,編譯器默認(rèn)是用整形常量表示一個枚舉類型字符常量的。
二、枚舉類定義
枚舉類的作用域同樣是在定義的類內(nèi),但是枚枚舉類是專門為枚舉創(chuàng)建的類,也就是說,只能用于枚舉。
2.1聲明代碼如下
enum class Data1{ First = 1, Second = 2, Third = 3 }; enum class Data2{ First = 7, Second = 8, Fourth = 9 };
2.2調(diào)用代碼如下
#include <iostream> #include "EnumTest.h" enum class Data1{ First = 1, Second = 2, Third = 3 }; enum class Data2{ First = 7, Second = 8, Fourth = 9 }; int main() { CEnumTest *enumTest = new CEnumTest(); enumTest->show(); /*枚舉類*/ std::cout << "(int)Data1::First==" << (int)Data1::First << std::endl; //枚舉類Data1可以直接用作用域解析運算符::調(diào)用對應(yīng)枚舉成員常量Data1::First std::cout << "(int)Data2::First==" << (int)Data2::First << std::endl; //枚舉類Data2可以直接用作用域解析運算符::調(diào)用對應(yīng)枚舉成員常量Data2::First system("pause"); return true; }
2.3輸出結(jié)果如下
2.4總結(jié)
由上面結(jié)果可知,枚舉類定義后,可以直接用作用域解析運算符::直接調(diào)用對應(yīng)枚舉類的成員常量Data1::First,可以當(dāng)成一個常量來調(diào)用。
以前C語言枚舉的常規(guī)調(diào)用就是在枚舉類中去掉class就可以了,即下面代碼
enum Data1{ First = 1, Second = 2, Third = 3 };
其它用法跟上面兩個基本一樣,就不介紹了。
參考內(nèi)容:
《C++ Primer Plus》(第6版)中文版 372-373頁
以上就是C++枚舉類型用法總結(jié)(枚舉字符常量代替常量)的詳細(xì)內(nèi)容,更多關(guān)于C++ 枚舉的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++實現(xiàn)LeetCode(25.每k個一組翻轉(zhuǎn)鏈表)
這篇文章主要介紹了C++實現(xiàn)LeetCode(25.每k個一組翻轉(zhuǎn)鏈表),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07