我们先看一下例子。
#include <iostream>
int main()
{
const int constant = 1;
const int* const_p = &constant;
int* modifier = const_cast<int*>(const_p);
*modifier = 100;
std::cout << "constant: " << constant << ", *const_p=" << *const_p;
//Output: constant: 1, *const_p=100
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不知道它在内存架构上是如何实现的。看来编译器在堆栈中占用了额外的内存空间,以便我们可以跟踪值为constant的“原始” 1,以及堆栈中值为 的新内存位置100。是吗?那么,const_cast确实会消耗额外的内存,这是初学者可能没有想到的吗?