Back to TIL list

C++ - const_cast

Created at

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
#include <iostream>
using namespace std;

void f(int* p) {
  cout << *p << endl;
}

int main(void) {
  const int a = 10;
  const int* b = &a;

  // A função f() espera receber um int* e não um const int*
  // f(b);

  int* c = const_cast<int*>(b);
  f(c);

  // Lvalue é const
  //  *b = 20;

  // Comportamento indefinido
  //  *c = 30;

  int a1 = 40;
  const int* b1 = &a1;
  int* c1 = const_cast<int*>(b1);

  // o inteiro a1 referenciado por c1 não foi declarado como const
  *c1 = 50;

  return 0;
}

Referências