本文主要是介绍reinterpret_cast的含义和特性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
reinterpret_cast
含义: 直接以另外一种格式来解释当前内存, 能够在任意指针(或引用)类型之间的转换
举例
我们使用reinterpret_cast
将const unsigned char*
转为const char*
PyObject* get_data(const unsigned char* data, int size){PyObject* str = PyBytes_FromStringAndSize(reinterpret_cast<const char*>(data), size);return str;
}
特性
不能去掉const
int main() {typedef void (*FP)(char *);FP fp = [](char *x) -> void{cout << x << endl;};const char* a = "hello world";// fp(reinterpret_cast<char*>(a));// C++ reinterpret_cast 无法丢掉常量或其他类型限定符fp(const_cast<char*> (a));return 0;
}
任意指针(引用)之间转换
这里可能比较迷惑, 为什么const int*
能转化为void (FP*) (char*)
的函数指针, 不是说不能去掉const嘛, 因为const在指针之前, 意义是所指内容不变, 函数指针默认含义肯定是所指内容不变(函数还能改变么)
int main() {typedef void (*FP)(char *);int v = 12;const int* vs = &v;FP fp = reinterpret_cast<FP>(v);return 0;
}
这篇关于reinterpret_cast的含义和特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!