- C++ Basics
- C++ Introduction
- C++ Installation
- C++ Syntax
- C++ Hello World
- C++ Comments
- C++ Variables
- C++ Data Types
- C++ Constants
- C++ Type Casting
- C++ Inline
- C++ File Inclusion
- C++ Date & Time
- C++ Return Types
- C++ Object Oriented
- C++ Classes
- C++ Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Exceptions
- C++ Advanced
- C++ Conditions
- C++ Loops
- C++ Functions
- C++ Structures
- C++ Enums
- C++ References
- C++ Pointers
- C++ Data Structures
- C++ Libs
- C++ Data Structures
- C++ Arrays
- C++ Vectors
- C++ Lists
- C++ Linked List
- C++ Deque
- C++ Stacks
- C++ Queues
- C++ Priority Queues
- C++ Sets
- C++ Maps
- C++ Unordered Sets and Maps
- C++ Graphs
C++ Constants
Constants in C++ are variables whose values cannot be changed after they are initialized. They help to make programs more robust, readable, and easier to maintain by protecting values from being accidentally modified. C++ provides several ways to define constants.
1. Using the const Keyword
The const keyword is the most common way to define constants in C++. Once a variable is declared as
const, its value cannot be modified.
Syntax:
cppconst data_type variable_name = value;
Example:
cppconst int MAX_AGE = 100;
MAX_AGE = 110; // Error: Cannot modify a constant variable
In the above example, MAX_AGE is a constant, and its value cannot be changed during the program’s
execution.
Key Features of const:
- Must be initialized at the time of declaration.
- It applies to both primitive and user-defined data types (such as structs and classes).
2. Using the #define Preprocessor Directive
The #define directive is used to define constant values before the program is compiled. It’s a
preprocessor directive, not a true variable, so no memory is allocated for it. Unlike const,
#define is just a textual substitution.
Syntax:
cpp#define identifier value
Example:
cpp#define PI 3.14159
Here, PI is a constant and will be replaced with 3.14159 during compilation. You cannot
change its value in the program.
Differences from const:
#defineis handled by the preprocessor, whereasconstis handled by the compiler.#definedoes not respect scope, butconstdoes.#definedoes not provide type checking, whileconstdoes.
3. Using constexpr (C++11)
constexpr is used for defining constants that can be evaluated at compile time. It's more
restrictive than const but offers more optimization opportunities because the compiler can compute
the values during compilation, reducing runtime overhead.
Syntax:
cppconstexpr data_type variable_name = value;
Example:
cppconstexpr int LIGHT_SPEED = 299792458; // Speed of light in meters per second
Key Features of constexpr:
- Can be used to declare functions and values that are evaluated at compile time.
- Requires the value or function to be determinable at compile time.
Example with Function:
cppconstexpr int square(int x) {
return x * x;
}
int main() {
int result = square(5); // Computed at compile time
std::cout << result; // Outputs 25
return 0;
}
4. enum Constants
Enumerations (enum) can also be used to define a group of related constants.
Syntax:
cppenum EnumName {CONST1, CONST2, CONST3};
Example:
cppenum Color {RED, GREEN, BLUE};
Color myColor = RED;
In this example, RED, GREEN, and BLUE are constants. Enumerations are
useful when you need a variable to have one of a predefined set of values.
5. Constant Pointers and Pointer to Constants
-
Constant Pointer (
* const): The address stored in the pointer cannot change, but the value pointed to can.cppint x = 10; int* const ptr = &x; // The pointer is constant, but the value it points to can be changed -
Pointer to a Constant (
const *): The value pointed to by the pointer cannot be changed, but the pointer itself can point to different addresses.cppconst int* ptr = &x; // The value cannot be changed, but the pointer can point to different variables -
Constant Pointer to a Constant (
const * const): Neither the value pointed to nor the pointer itself can change.cppconst int* const ptr = &x; // Neither the pointer nor the value can change
Example Code with Constants
cpp#include
int main() {
const int MAX_STUDENTS = 30; // Declaring a constant using const
constexpr double PI = 3.14159; // Declaring a constant using constexpr
#define MIN_AGE 18 // Declaring a constant using #define
std::cout << "Max Students: " << MAX_STUDENTS << std::endl;
std::cout << "Value of PI: " << PI << std::endl;
std::cout << "Minimum Age: " << MIN_AGE << std::endl;
return 0;
}
Output:
yamlMax Students: 30
Value of PI: 3.14159
Minimum Age: 18
Summary
const: Declares a constant that cannot be modified once initialized. It respects scope and provides type safety.#define: A preprocessor directive that replaces code at compile time. It does not provide type safety or scope control.constexpr: Used for constants that are evaluated at compile time, offering better optimization thanconstfor certain situations.- Enumerations (
enum): Defines a set of related constants. - Constant pointers and pointer to constants provide more control over pointer behavior and the data they reference.
Constants help make your programs safer, easier to understand, and more maintainable by ensuring certain values do not accidentally change.