⚡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.
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
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.