哪个更安全?
int main()
{
const int i=5;
int *ptr;
ptr=(int*)&i; <------------------- first
ptr=const_cast<int*>(&i); <-------------------Second
return 0;
}
Run Code Online (Sandbox Code Playgroud)
从某种意义上讲,它更安全,你不会获得除了删除之外的其他东西const:
int main()
{
const char i=5;
int *ptr;
ptr=(int*)&i; // the compiler won't complain
ptr=const_cast<int*>(&i); // will fail, since `i` isn't an int
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不一定意味着const_cast<>安全:
const int i=5;
int main()
{
int const& cri(i);
int& ri = const_cast<int&>(cri); // unsafe
ri = 0; // will likely crash;
return 0;
}
Run Code Online (Sandbox Code Playgroud)