This question already has an answer here:
Consider following codes
#include <iostream>
using namespace std;
int main() {
const int i = 10, *cpi =& i;
int *pi = const_cast<int*>(cpi);
*pi = 100;
cout<<*pi<<" "<<*cpi<<" "<<i<<endl;
// 100 100 10
return 0;
}
I used const_cast<int*>(cpi)
to cast cpi
from const int*
to int*
. And use const_casted int pointer to modify const int. The value of *cpi
and *pi
are as my expectation.
However, why i is still 10? Did compile create a second int value to store these 2 values?
Aucun commentaire:
Enregistrer un commentaire