static_cast 表示静态变量的类型转换, 如int->char, 不合适的类型转换将会发生错误
/* static_cast 类型转换 */ #include <iostream> using namespace std; int main() { int* pi = NULL; //char c = int(pi); //C++类型转换 //char c = (int)pi; //C类型转换 void* pc = pi; pi = static_cast<int *>(pc); char c = static_cast<int>(pi); //会出现报错,因为int* 无法转换为int类型 }
const_cast 表示const类型和非const类型的相互转换
/* const_cast */ #include <iostream> using namespace std; int main() { //volatile表示易变的,可以变化的 const volatile int ci = 100; //表示数字是易变 int* pi = const_cast<int *>(&ci); //进行地址的赋值操作 *pi = 200; //对地址进行赋值 cout << *pi << endl; cout << ci << endl; cout << (void *)&ci << endl; cout << pi << endl; }
reinterpret_cast 表示进行隐式转换
/* 进行隐式转换 */ #include <iostream> using namespace std; int main(void) { //\000 = "\0" --> 0 char buf[] = "0001\00012345678\000123456"; struct Http { char type[5]; char id[9]; char passward[7]; }; Http *p_http = reinterpret_cast<Http*>(buf); cout << p_http->type << endl; cout << p_http->id << endl; cout << p_http->passward << endl; return 0; }
原文链接: https://www.cnblogs.com/hyq-lst/p/12603716.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338952
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!