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