Cambo Freelance
HomeServicesArticlesTutorialsTeamCoursesContact
Cambo Freelance

Professional freelance team from Cambodia delivering technology-driven solutions with cultural insight and modern expertise.

Send us a message

Ready to start your project? Get in touch with our team.

Contact Us

Services

  • Web & Mobile Development Services
  • Graphic Design & Branding Services

Useful Links

  • Home
  • Services
  • Learning
  • About Us
  • Contact
  • Pricing

© 2026 Cambo Freelance. រក្សាសិទ្ធិទាំងអស់។

TelegramFacebookLinkedInEmail
HomeTutorialsC++C++ Enumerations
⚡C++ Tutorials

50 lessons

Beginner(21)1C++ Introduction2C++ Getting Started3C++ Syntax4C++ Output5C++ Comments6C++ Variables7C++ Data Types8C++ Constants9C++ User Input10C++ Operators11C++ Strings12C++ Math13C++ Booleans14C++ Conditions15C++ Switch16C++ Loops17C++ Break and Continue18C++ Arrays19C++ Functions20C++ References21C++ Pointers
Intermediate(19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers
Advanced(10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44
⚡

C++ Tutorials

Lesson 34 of 50

All lessons
Beginner (21)1C++ Introduction2C++ Getting Started
26
C++ Encapsulation
27C++ Inheritance
28C++ Polymorphism
29C++ Abstraction
30C++ Files
31C++ Exception Handling
32C++ Namespaces
33C++ Structures
34C++ Enumerations
35C++ STL Introduction
36C++ Vectors
37C++ Maps
38C++ Sets
39C++ Queues
40C++ Stacks
C++ Move Semantics
45C++ Multithreading
46C++ Design Patterns
47C++ Memory Management
48C++17 Features
49C++20 Features
50C++ Performance Optimization
3
C++ Syntax
4C++ Output
5C++ Comments
6C++ Variables
7C++ Data Types
8C++ Constants
9C++ User Input
10C++ Operators
11C++ Strings
12C++ Math
13C++ Booleans
14C++ Conditions
15C++ Switch
16C++ Loops
17C++ Break and Continue
18C++ Arrays
19C++ Functions
20C++ References
21C++ Pointers
Intermediate (19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers26C++ Encapsulation27C++ Inheritance28C++ Polymorphism29C++ Abstraction30C++ Files31C++ Exception Handling32C++ Namespaces33C++ Structures34C++ Enumerations35C++ STL Introduction36C++ Vectors37C++ Maps38C++ Sets39C++ Queues40C++ Stacks
Advanced (10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44C++ Move Semantics45C++ Multithreading46C++ Design Patterns47C++ Memory Management48C++17 Features49C++20 Features50C++ Performance Optimization
⚡C++IntermediateLesson 34 of 50CamboFreelanceJune 19, 2026

C++ Enumerations

Learn C++ enumerations: create named constants with enum, use scoped enum class for type safety, and apply them in switch statements.


Tutorials › C++ › Enumerations
Intermediate6 min readLesson 34 of 50

enum

An enumeration defines a named set of integer constants, making code more readable than magic numbers.

#include <iostream>
using namespace std;

enum Direction { NORTH, EAST, SOUTH, WEST };
// NORTH=0, EAST=1, SOUTH=2, WEST=3

int main() {
    Direction d = NORTH;
    if (d == NORTH) cout << "Heading North!" << endl;

    // Custom values
    enum Status { PENDING=1, ACTIVE=2, INACTIVE=3, DELETED=99 };
    Status s = ACTIVE;
    cout << "Status code: " << s << endl;   // 2
    return 0;
}

enum class (C++11 — Scoped Enum)

enum class prevents name collisions and implicit conversions to int:

enum class Color { RED, GREEN, BLUE };
enum class Fruit { RED, APPLE, BANANA };   // RED is separate from Color::RED

Color c = Color::RED;   // must use scope
// int x = Color::RED;  // ERROR — no implicit conversion

switch (c) {
    case Color::RED:   cout << "Red"   << endl; break;
    case Color::GREEN: cout << "Green" << endl; break;
    case Color::BLUE:  cout << "Blue"  << endl; break;
}
Best Practice: Prefer enum class over plain enum in modern C++. It avoids pollution of the enclosing scope and provides type safety.

Exercise

Create an enum class Season with SPRING, SUMMER, AUTUMN, WINTER. Write a function that takes a Season and returns the average temperature for that season as a string.

Show Solution
#include <iostream>
using namespace std;

enum class Season { SPRING, SUMMER, AUTUMN, WINTER };

string getTemp(Season s) {
    switch (s) {
        case Season::SPRING: return "~20°C";
        case Season::SUMMER: return "~35°C";
        case Season::AUTUMN: return "~15°C";
        case Season::WINTER: return "~5°C";
    }
    return "Unknown";
}

int main() {
    cout << "Summer: " << getTemp(Season::SUMMER) << endl;
    cout << "Winter: " << getTemp(Season::WINTER) << endl;
    return 0;
}

Quiz

  1. What is the default starting value of the first enum member?

    • A) 1
    • B) -1
    • C) 0
    • D) Undefined
    Answer

    C) 0

Summary

  • enum creates named integer constants.
  • enum class (scoped enum) prevents name collisions and is type-safe.
  • Always prefer enum class in modern C++ code.
← Previous: Structures Next: STL Introduction →
c++enumerationsenumintermediate
PreviousLesson 33: C++ StructuresNextLesson 35: C++ STL Introduction
Back to All Tutorials