类型转换

  • 隐式类型转换
  • 强制类型转换
  • 静态类型转换
  • 动态类型转换
  • 常类型转换
  • 重解释类型转换

隐式类型转换

不同类型数据之间进行赋值

函数调用时,不同类型实参到形参的传值

函数返回了与定义类型不同的数据

//.h int a = 'c';//char类型隐形转换为int类型 void func(int a) { cout << "abc" <<endl; } func(2.34);//实参到形参的隐式转换 char funcT(int b) { return b;//返回类型隐式转换 }

强制类型转换

在类型不兼容时,可使用强制类型转换,在两个不同的类型之间完成转换。实现简单,转换功能强大。但由于时强制转换,可能会导致不合理转换,使用会引起各种错误,很危险,慎用~

char ch = 'a'; int b = (int)ch; 或 int b = int(ch);

静态类型转换

static_cast

目标类型变量 = static_cast (源类型变量);

常用于将void* 转换为其它类型的指针

int* pi = NULL;
void* pv = pi;
pi = static_cast<int*>(pv);

动态类型转换

dynamic_cast

目标类型变量 = dynamic_cast(源类型变量);

用于类继承层次间的指针或引用转换,支持运行时识别指针或引用。主要是用于安全的向下转型。

TBaseCast* baseCast; 
TDerived* der = new TDerived(); 
baseCast = dynamic_cast<TBaseCast*>(der);//向上转型本来就是安全的 
//baseCast = der; 

TBaseCast* baseCast2 = new TBaseCast(); 
TDerived *der2 = dynamic_cast<TDerived *>(baseCast2);//向下转型

常类型转换

const_cast

目标类型变量 = const_cast(源类型变量);

用于去除指针或引用的属性

通过const_cast运算符,也只能将const type转换为type,将const type&转化为type&。

const int ci = 80; 
int* pci = const_cast<int*>(&ci);// const转换为非const

重解释类型转换

reinterpret_cast

目标类型变量 = reinterpret_cast(源类型变量);

用于任意类型指针或引用之间的转换

指针和整数之间的转换

用来处理无关类型之间的转换;它会产生一个新值,这个值会有与原始参数完全相同的比特位。其实就是按比特位重新解释为要转换的类型。

struct T { char type[5]; 
char acc[9]; char passwd[7]; }; 
char buf[] = "0001\00012345678\000123456"; 
T * pt = reinterpret_cast<T*>(buf);//把字符流转化为结构体 
cout << pt->type << endl; 
cout << pt->acc << endl; 
cout << pt->passwd << endl;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值