学习网址
C++中的static_cast ,reinterpret_cast的用法和区别
https://blog.csdn.net/u014450222/article/details/81428336C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
http://c.biancheng.net/view/410.html
static_cast
reinterpret_cast
dynamic_cast
/*
static_cast ,reinterpret_cast的用法和区别
*/
#include <signal.h>
#include <string>
#include <sstream>
#include <iostream>
#include <memory>
using namespace std;
int test_reinterpret_cast()
{
int i=10;
int *p = &i;
char c='9';
//void* arg = (void*)&i;
//借助void* 来进行过渡,通常用于函数传递参数用
void* arg = reinterpret_cast<void *>(p);
//cout<<"arg="<<*arg<<endl; //编译不过
int* j = reinterpret_cast<int*>(arg);
cout<<"j="<<*j<<endl; //*j=10
//char *p = "This is an example.";
//i = reinterpret_cast<int>(p);//编译不过
//i = reinterpret_cast<int>(c);//编译不过
//c = reinterpret_cast<int>(i); //i=10 转成字符'\n'
c=i;
cout<<"c="<<c<<endl; //c='\n' ASCII码为10 是换行,将当前位置移到下一行。
return 0;
}
int test_static_cast()
{
int i;
char c;
float f = 300.71;
i = static_cast<int>(f);
c = static_cast<char>(f); //c=',' 44
//c = reinterpret_cast<char>(f);//编译不过
cout<<"i="<<i<<endl;
return 0;
}
int main()
{
test_reinterpret_cast();
test_static_cast();
return 0;
}