Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🔵 Core C++  ·  Lesson 29

Enumerations in C++

enum क्या है?

enum (enumeration) संबंधित पूर्ण-संख्या values के समूह को सरल नाम देता है। यह याद रखने के बजाय कि 0 का मतलब Monday और 1 का मतलब Tuesday है, आप उन्हें नाम देते हैं — code सादे अंग्रेज़ी जैसा पढ़ा जाता है और गलतियाँ पकड़ना आसान होता है।

एक सादा enum

C++
#include <iostream>
using namespace std;
enum Day { Mon, Tue, Wed, Thu, Fri };

int main() {
    Day today = Wed;
    cout << "Day number: " << today << "\n";   // 2
    return 0;
}
Output:
Day number: 2

Default रूप से पहला नाम 0 है, अगला 1, और ऐसे ही — तो Wed 2 है।

Custom values

आप अपने numbers सेट कर सकते हैं; unset वाले आख़िरी से जारी रहते हैं:

C++
enum Level { Low = 1, Medium = 5, High };   // High = 6

switch में enums

Enums switch से स्वाभाविक रूप से जुड़ते हैं:

C++
enum Signal { Red, Yellow, Green };
Signal s = Green;
switch (s) {
    case Red:    cout << "Stop\n";  break;
    case Yellow: cout << "Wait\n";  break;
    case Green:  cout << "Go\n";    break;
}
Output:
Go

enum class (scoped)

आधुनिक C++ enum class पसंद करता है, जो नाम scoped रखता है और चुपचाप int में नहीं बदलता:

C++
enum class Color { Red, Green, Blue };
Color c = Color::Green;      // Color:: se qualify karna zaroori
// int n = c;                // ERROR: koi implicit conversion nahi
int n = (int)c;              // explicit cast allowed hai → 1

Color:: prefix का मतलब दो अलग scoped enums दोनों में बिना टकराव Red हो सकता है।

कौन-सा कब इस्तेमाल करें

enum class तब जबसादा enum ठीक तब जब
आप सुरक्षा और कोई नाम टकराव न चाहेंत्वरित code, छोटा scope
आप int conversion न चाहेंआप int value पर सीधे निर्भर हों

नियम के रूप में, नए code में enum class पसंद करें।

आम गलतियाँ

  • enum class के साथ Color:: prefix भूलना।
  • सादे enum के नामों को scoped मानना — वे आसपास के scope में रिसते हैं।
  • यह मानना कि enum class अपने आप int में बदलता है (इसे cast चाहिए)।
  • दो सादे enums में एक नाम दोबारा इस्तेमाल करना, टकराव पैदा करना।
🏋️ अभ्यास

एक enum class Direction { North, East, South, West } परिभाषित करें। एक function लिखें जो Direction ले और switch से उसका नाम print करे। हर direction के लिए इसे call करें।

सारांश

  • enum पढ़ने योग्य code के लिए संबंधित integer values के समूह को नाम देता है।
  • Values default रूप से 0 से शुरू होती हैं; आप custom numbers सेट कर सकते हैं।
  • Enums switch statements में साफ़ काम करते हैं।
  • enum class scoped है और अंतर्निहित रूप से int में नहीं बदलता।
  • सुरक्षा के लिए आधुनिक C++ में enum class पसंद करें।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C++ में enum क्या है?
enum, enumeration का संक्षिप्त रूप, एक type है जो संबंधित integer values के समूह को पढ़ने योग्य नाम देता है। जैसे enum Day { Mon, Tue, Wed }; आपको magic number के बजाय Mon इस्तेमाल करने देता है, code को साफ़ और कम त्रुटि-प्रवण बनाते हुए।
C++ में enum और enum class में क्या अंतर है?
सादा enum अपने नाम आसपास के scope में रखता है और स्वतंत्र रूप से int में बदलता है, जो टकराव और bugs पैदा कर सकता है। enum class (scoped enum) अपने नाम enum के scope के अंदर रखता है और अंतर्निहित रूप से int में नहीं बदलता, इसे सुरक्षित और आधुनिक C++ में पसंदीदा बनाते हुए।
C++ में enum constants को विशिष्ट values कैसे assign करते हैं?
आप definition में = से values assign करते हैं, जैसे enum Level { Low = 1, Medium = 5, High = 10 };। जो constant आप assign नहीं करते वह पिछली value plus एक लेता है, तो numbering आख़िरी सेट value से अपने आप जारी रहती है।
C++ में सादे enum के बजाय enum class क्यों पसंद किया जाता है?
enum class सादे enums की दो समस्याएँ टालता है: इसके नाम आसपास के scope में नहीं रिसते, तो अलग enums नाम दोबारा इस्तेमाल कर सकते हैं, और यह चुपचाप int में नहीं बदलता, जो आकस्मिक दुरुपयोग रोकता है। यह code को सुरक्षित और साफ़ बनाता है।
क्या C++ में switch statement में enum इस्तेमाल कर सकते हैं?
हाँ, enums switch में स्वाभाविक रूप से काम करते हैं क्योंकि वे integer-आधारित हैं। आप हर enum value के लिए एक case लिखते हैं, जो raw numbers इस्तेमाल करने से साफ़ है और compiler को आपको चेताने देता है अगर आप कोई value संभालना भूलें।
← Back to C++ Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicFunction Overloading आपकी प्रगति: 29 / 81 (36%) · Lesson 30 / 81 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें