Enumer eller Enumerated type (enumeration) er en brukerdefinert datatype som kan tildeles noen begrensede verdier. Disse verdiene er definert av programmereren på tidspunktet for deklarering av den oppregnede typen.
Behov for Enum Class over Enum Type:
Nedenfor er noen av grunnene til hva som er begrensningene til Enum Type og hvorfor vi trenger Enum Class for å dekke dem.
1.Enum er en samling av navngitte heltallskonstanter betyr at hvert element er tilordnet av heltallsverdi. 2.Det er deklarert med enum nøkkelord.
C++
#include> using> namespace> std;> enum> roll_no {> >satya = 70,> >aakanskah = 73,> >sanket = 31,> >aniket = 05,> >avinash = 68,> >shreya = 47,> >nikita = 69,> };> int> main()> {> >enum> roll_no obj;> >obj = avinash;> >cout <<>'The roll no of avinash='> << obj;> }> |
>
>
velg somProduksjon
The roll no of avinash=68>
To oppregninger kan ikke dele de samme navnene:
CPP
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Defining enum2 Gender2 with same values> >// This will throw error> >enum> Gender2 { Male,> >Female };> >// Creating Gender type variable> >Gender gender = Male;> >Gender2 gender2 = Female;> >cout << gender << endl> ><< gender2;> >return> 0;> }> |
java type konvertering og casting
>
>
Kompileringsfeil:
prog.cpp:13:20: error: redeclaration of 'Male' enum Gender2 { Male, ^ prog.cpp:8:19: note: previous declaration 'main()::Gender Male' enum Gender { Male, ^ prog.cpp:14:20: error: redeclaration of 'Female' Female }; ^ prog.cpp:9:19: note: previous declaration 'main()::Gender Female' Female }; ^ prog.cpp:18:23: error: cannot convert 'main()::Gender' to 'main()::Gender2' in initialization Gender2 gender2 = Female; ^> Ingen variabel kan ha et navn som allerede er i en eller annen oppregning:
CPP
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Creating Gender type variable> >Gender gender = Male;> >// creating a variable Male> >// this will throw error> >int> Male = 10;> >cout << gender << endl;> >return> 0;> }> |
>
>
Kompileringsfeil:
prog.cpp: In function 'int main()': prog.cpp:16:9: error: 'int Male' redeclared as different kind of symbol int Male = 10; ^ prog.cpp:8:19: note: previous declaration 'main()::Gender Male' enum Gender { Male, ^> Enums er det ikke typesikker :
CPP
kontroll strukturer python
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Defining enum2 Color> >enum> Color { Red,> >Green };> >// Creating Gender type variable> >Gender gender = Male;> >Color color = Red;> >// Upon comparing gender and color> >// it will return true as both have value 0> >// which should not be the case actually> >if> (gender == color)> >cout <<>'Equal'>;> >return> 0;> }> |
sortert arraylist java
>
>
Advarsel:
prog.cpp: In function 'int main()': prog.cpp:23:19: warning: comparison between 'enum main()::Gender' and 'enum main()::Color' [-Wenum-compare] if (gender == color) ^>
Enum klasse
C++11 har introdusert enum-klasser (også kalt omfangsrike oppregninger ), som gjør oppregninger begge deler sterkt skrevet og sterkt omfang . Klasseenum tillater ikke implisitt konvertering til int, og sammenligner heller ikke tellere fra forskjellige opptellinger.
For å definere enum klasse bruker vi klasse nøkkelord etter enum nøkkelord.
Syntaks:
// Declaration enum class EnumName{ Value1, Value2, ... ValueN}; // Initialisation EnumName ObjectName = EnumName::Value;> Eksempel:
// Declaration enum class Color{ Red, Green, Blue}; // Initialisation Color col = Color::Red;> Nedenfor er en implementering for å vise Enum Class
CPP
// C++ program to demonstrate working> // of Enum Classes> #include> using> namespace> std;> int> main()> {> >enum> class> Color { Red,> >Green,> >Blue };> >enum> class> Color2 { Red,> >Black,> >White };> >enum> class> People { Good,> >Bad };> >// An enum value can now be used> >// to create variables> >int> Green = 10;> >// Instantiating the Enum Class> >Color x = Color::Green;> >// Comparison now is completely type-safe> >if> (x == Color::Red)> >cout <<>'It's Red
'>;> >else> >cout <<>'It's not Red
'>;> >People p = People::Good;> >if> (p == People::Bad)> >cout <<>'Bad people
'>;> >else> >cout <<>'Good people
'>;> >// gives an error> >// if(x == p)> >// cout<<'red is equal to good';> >// won't work as there is no> >// implicit conversion to int> >// cout<< x;> >cout <<>int>(x);> >return> 0;> }> |
>
>Produksjon
alfabetet nummerert
It's not Red Good people 1>
Oppregnede typer erklært enum-klassen har også mer kontroll over deres underliggende type; det kan være en hvilken som helst integrert datatype, for eksempel char, short eller unsigned int, som i hovedsak tjener til å bestemme størrelsen på typen.
Dette er spesifisert av et kolon og underliggende type etter den oppregnede typen:
eg: enum class eyecolor : char {char,green,blue}; Here eyecolor is a distinct type with the same size as a char (1 byte).> C++
#include> using> namespace> std;> enum> rainbow{> >violet,> >indigo,> >blue,> >green,yellow,orange,red> }colors;> enum> class> eyecolor:>char>{> >blue,green,brown> }eye;> int> main() {> >cout<<>'size of enum rainbow variable: '><<>sizeof>(colors)< cout<<'size of enum class eyecolor variable:'< |
>
>Produksjon
size of enum rainbow variable: 4 size of enum class eyecolor variable:1>
Henvisning: https://en.cppreference.com/w/cpp/language/enum