- static_cast<>()
可用来大类型转小类型,从而去掉警告
int j;
int i;
double slope = static_cast<double>(j)/i;
用来找回原指针,但是一旦指针类型错误,则出现未定义
double d;
void* p = &d;
double* dp = static_cast<double*>(p);
- const_cast<>()常用于函数重载
const string& m_shorterstring(const string& s1,const string& s2)
{
return s1.size()<=s2.size()?s1:s2;
}
string& m_shorterstring(string& s1,string& s2)
{
auto& r = m_shorterstring(const_cast<const string&>(s1),const_cast<const string&>(s2));
return const_cast<string&>(r);
}
用于去除const或者加上const
const char* pc;
char* p = const_cast<char*>(pc);
- reinterpret_cast
通常为运算对象的位模式提供较低层次的重新解释
int* ip;
char* pc = reinterptret_cast<char*>(ip);