O operadorconst_cast
é utilizado para:
- adicionar um modificador
const
a um tipo - remover um modificador
const
de um tipo - adicionar um modificador
volatile
a um tipo - remover um modificador
volatile
de um tipo
1#include <iostream>
2using namespace std;
3
4void f(int* p) {
5 cout << *p << endl;
6}
7
8int main(void) {
9 const int a = 10;
10 const int* b = &a;
11
12 // A função f() espera receber um int* e não um const int*
13 // f(b);
14
15 int* c = const_cast<int*>(b);
16 f(c);
17
18 // Lvalue é const
19 // *b = 20;
20
21 // Comportamento indefinido
22 // *c = 30;
23
24 int a1 = 40;
25 const int* b1 = &a1;
26 int* c1 = const_cast<int*>(b1);
27
28 // o inteiro a1 referenciado por c1 não foi declarado como const
29 *c1 = 50;
30
31 return 0;
32}
Referências
- [const_cast operator syntax(https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.cbclx01/keyword_const_cast.htm)