const_cast in C++

In this tutorial, we will learn const_cast in C++ with examples.

There are 4 types of casting operators as follows:

1. const_cast
2. static_cast
3. dynamic_cast
4. reinterpret_cast

Here we have explained about const_cast in c++.

const_cast is one of the casting operators supported by C++.  It is used to remove the constant nature of an object in C++.

Syntax:

const_cast<type name>(expression)

Example:

Input: 
const int a = 67; 
const int* b = &a; 
cout<<"Previous Value of a:"<<*b<<"\n";
int* c=const_cast<int *>(b); 
*c=109; 
cout<<"New Value of a:"<<*b;
Output:
Previous Value of a:67
New Value of a:109

Some other uses of const_cast:

const_cast can be used to pass constant variables to a function that does not accept constant parameters.

#include <bits/stdc++.h>
using namespace std;
int func(int* a) {
   return (*a + 4);
}
int main() {
   const int var = 16;
   const int *add = &var;
   int *z = const_cast <int *>(add);
   int y = func(z);
   cout << y;
   return 0;
}
Output: 20

Here, notice that we cannot change the value of const variable which is being passed, it will give the error ‘Undefined Behaviour’.

#include <bits/stdc++.h> 
using namespace std; 
int func(int* a) 
{ 
*a=*a+56;
return (*a); 
} 
int main() 
{ 
const int var = 16; 
const int *add = &var; 
int *z = const_cast <int *>(add); 
int y = func(z) ;
cout << var; 
return 0; 
}
Output: Undefined Behaviour

It is acceptable to modify variable which is not declared constant.

Also read: How to use dynamic_cast on vector in C++

Leave a Reply