Constants in C++
In C++, constants are values that remain fixed throughout the execution of a program. In this article, we will discuss various ways to define and use constants in C++.
Constants in C++
Constants in C++ refer to variables with fixed values that cannot be changed. Once they are defined in the program, they remain constant throughout the execution of the program. They are generally stored as read-only tokens in the code segment of the memory of the program. They can be of any available data type in C++ such as int, char, string, etc.
How to Define Constants in C++?
We can define the constants in C++ using three ways:
- Using const Keyword
- Using constexpr Keyword
- Using #define Preprocessor
Let’s discuss these methods in detail.
1. Constant using const Keyword
Defining constants using const keyword is one of the older methods that C++ inherited from C language. In this method, we add the const keyword in the variable definition as shown below:
Syntax for const Keyword
const DATATYPE variable_name = value;
We first use the const keyword to make sure that our variable is a constant followed by the datatype of the constant variable then proceed with the name of the constant variable and finally give the appropriate value to the constant variable.
Note: We have to initialize the constant variable at the time of declaration as we cannot modify the value of it later in the program.
Example for const Keyword
C++
// C++ program to define how to use the const keyword #include <iostream> using namespace std; int main() { // declaring a variable int var = 10; // declaring a constant variable const int cons = 24; cout << "Initial Value:" << endl; cout << "var: " << var << endl; cout << "cons: " << cons << endl; // changing the value of both the constants var = 24; cons = 0; cout << "Final Value:" << endl; cout << "var: " << var << endl; cout << "cons: " << cons << endl; return 0; } |
Output
./Solution.cpp: In function 'int main()': ./Solution.cpp:19:10: error: assignment of read-only variable 'cons' cons = 0;
2. Constants using constexpr Keyword
The constexpr keyword is similar to const keyword and is also used to declare constants in C++. But the major difference is that the constexpr constants are initialized at compiler time, which is why their value must be known at the compile time. On the other hand, const keyword constants can be initialized at runtime and compile time.
Syntax for constexpr
constexpr DATATYPE variable_name = value ;
We first use the constexpr keyword to make sure that our variable is a constant followed by the DataType of the constant variable then proceed with the name of the constant variable and finally give the appropriate value to the constant variable.
Example for constexpr Keyword
C++
// C++ program to illustrate the use of constexpr keyword #include <iostream> using namespace std; int main() { // defining constant int constexpr hoursIn_day = 24; // printing value cout << "Total hours in a day: " << hoursIn_day; } |
Total hours in a day: 24
The above snippet uses the const and constexpr keywords to define constant the number of hours in a day (hoursIn_day)
3. Constants using #define Preprocessor
We can also define constants using the #define. Constants created using the #define preprocessor are called “macro constants”. Unlike the other methods, constants defined using this method simply work as an alias for their value which is substituted during preprocessing.
It is the less preferable way to define a constant in C++ due to the lack of type safety.
Syntax
#define MACRO_NAME replacement_value
We use the #define directive to create a macro. First, we start with the #define directive, followed by the name we want to give to our macro. Then, we provide a replacement value for the macro. Whenever the preprocessor encounters this macro in our code, it will replace it with the specified value.
Example
C++
// C++ Program to illustrate the use of #define to create a // constant #include <iostream> using namespace std; // using #define to create a macro #define Side 5 int main() { // using constant const double area = Side * Side; cout << "The area of square with side 5 is " ; cout << area; return 0; } |
The area of square with side 5 is 25
Explanation:
We have defined the macro constant Side with the value of 5. We then used it to find the area of the square. The macro constant Side is global meaning it is not restricted to a single function. Also, note that we cannot get user input for the macro constant.
Important Points about Constants
The following are some major properties of C++ constants discussed in the article:
- Constants are the variables with fixed values.
- We have to initialize the constants at the time of declaration and we cannot change this value later in the program.
- const and constexpr can be used to define a constant.
- #define is also used to define a macro constant.