Publicado em: 10/Jan/2020
Atualizado em: 10/Jan/2020
C++

C++ - const_cast

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)
comments powered by Disqus