Skip to main content

C++ Enumerations with a Comprehensive Example:

 C++ Enumerations with a Comprehensive Example:

In C++, enumerations (enums) are user-defined data types consisting of named integer constants, enhancing readability, maintainability, and type safety for sets of constants.

Key Concepts:

  • Declaration: Use the enum keyword followed by a name and curly braces:
C++
enum class Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };
  • Accessing values: Use the enum name and member name:
C++
Weekday today = Weekday::THURSDAY;
std::cout << "Today is " << today << std::endl;
  • Implicit values: By default, members start from 0 and increment by 1. Use assignment to change this:
C++
enum class Suit { CLUBS = 1, DIAMONDS, HEARTS, SPADES };
  • Scope: Enum members have the same scope as the enum declaration. Use typedef for global scope.

  • Enum classes: Encapsulate enums for better control and access control. Example:

C++
enum class Day {MONDAY, TUESDAY};
int get_day_index(Day day) {
    return static_cast<int>(day); // Assumes Day is an enum class
}

Advantages of using enums:

  • Readability: Self-explanatory names instead of magic numbers.
  • Maintainability: Change constant values in one place affects all usages.
  • Type safety: Prevents accidental assignment of incompatible values.
  • Switch statements: Use enum values in switch statements for cleaner code.

Combined Program Example (Traffic Light Controller):

C++
#include <iostream>
#include <chrono>
#include <thread>

enum class TrafficLight { RED, YELLOW, GREEN };

TrafficLight currentLight = TrafficLight::RED;

void displayLight(TrafficLight light) {
    switch (light) {
        case TrafficLight::RED:
            std::cout << "Red light: STOP!\n";
            break;
        case TrafficLight::YELLOW:
            std::cout << "Yellow light: CAUTION!\n";
            break;
        case TrafficLight::GREEN:
            std::cout << "Green light: GO!\n";
            break;
    }
}

void changeLight(TrafficLight& light) {
    int duration;
    switch (light) {
        case TrafficLight::RED:
            duration = 3;
            light = TrafficLight::YELLOW;
            break;
        case TrafficLight::YELLOW:
            duration = 1;
            light = TrafficLight::GREEN;
            break;
        case TrafficLight::GREEN:
            duration = 5;
            light = TrafficLight::RED;
            break;
    }
    std::this_thread::sleep_for(std::chrono::seconds(duration));
}

int main() {
    while (true) {
        displayLight(currentLight);
        changeLight(currentLight);
    }
    return 0;
}

Key Points:

  • The program uses an enum class TrafficLight to represent traffic light states.
  • The displayLight function displays a message according to the current light.
  • The changeLight function changes the light state and waits for a specific duration.
  • This example demonstrates how enums can improve code readability and maintainability.

Remember:

  • Consider using enum class by default for better encapsulation and safety.
  • Choose appropriate variable names and values for clarity.
  • Use enums responsibly and efficiently to enhance your C++ code.

Comments

Popular posts from this blog

C++ Functions

C++ Functions A function is a block of code that performs a specific task. Suppose we need to create a program to create a circle and color it. We can create two functions to solve this problem: a function to draw the circle a function to color the circle Dividing a complex problem into smaller chunks makes our program easy to understand and reusable. There are two types of function: Standard Library Functions:  Predefined in C++ User-defined Function:  Created by users In this tutorial, we will focus mostly on user-defined functions. C++ User-defined Function C++ allows the programmer to define their own function. A user-defined function groups code to perform a specific task and that group of code is given a name (identifier). When the function is invoked from any part of the program, it all executes the codes defined in the body of the function. C++ Function Declaration The syntax to declare a function is: returnType functionName (parameter1, parameter2,...) { // func...

C++ Variable

C++ Variables: Named Storage Units In C++, variables serve as named boxes in memory that hold values during program execution. Each variable has three key aspects: 1. Data Type: Defines the kind of data a variable can store: numbers (integers, floating-point, etc.), characters, boolean values (true/false), or custom data structures (arrays, objects). Common data types: int : Whole numbers (e.g., -10, 0, 23) float : Decimal numbers (e.g., 3.14, -2.5) double : More precise decimal numbers char : Single characters (e.g., 'a', 'Z', '&') bool : True or false values 2. Name: A user-defined label for the variable, chosen according to naming conventions: Start with a letter or underscore. Contain letters, digits, and underscores. Case-sensitive (e.g.,  age  and  Age  are different). Not a reserved keyword (e.g.,  int ,  for ). Choose meaningful names that reflect the variable's purpose. 3. Value: The actual data stored in the variable, which must match its data...

Interviews

  System analysis and design (SAD) interviews are a common assessment tool for software developer and system analyst roles. They evaluate a candidate's ability to understand problems, design solutions, and think critically about systems. Here's a breakdown of what to expect in a SAD interview: Purposes of SAD Interviews Evaluate problem-solving skills:  These interviews assess how you approach a problem, gather information, and develop a solution ( https://career.guru99.com/software-design-interview-questions/ ) Gauge system design knowledge:  They test your understanding of system architecture, scalability, databases, and trade-offs involved in design decisions. Assess communication skills:  Being able to clearly explain your thought process and design choices is essential in SAD roles. Types of SAD Interview Questions System design basics:  These might cover the CAP theorem, scaling strategies, or database selection criteria. ( https://www.interviewbit.com/sys...