Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225533
  • 博文数量: 56
  • 博客积分: 2325
  • 博客等级: 大尉
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 18:18
文章存档

2012年(7)

2011年(1)

2010年(2)

2009年(46)

我的朋友

分类: C/C++

2010-04-22 14:01:20

隐式转换
  1. 算术转换,最简单的是类型提升
  2. 标准转换
  • 指针转换 int ia[10]; int *p = ia;
数组用作&运算符,或sizeof操作符时,或对数组引用做初始化时,不转为指针
  • 其他类型转换为Bool型
  • bool型转为整形
true->1 false->0
  • 枚举类型的转换
可将枚举类型转为整型
  • 标准库定义的类型
如 while(cin >> s)
   3.类类型转换
    构造形参类型->类类型

    可用单个实参调用的构造函数定义了从形参类型到该类类型的隐式转换。
     
class A
{
A(int a);
}
void f(A &v);
f(20);//由于隐式转换,相当于f(A(20))
    若在构造函数前加explicit,则会禁止隐式转换
class A
{
explicit A(int a);
}
void f(A &v);
f(20);//错误,隐式转换被抑制
    建议单参数构造函数应禁止隐式转换。

    类类型->其他类型
    类型转换函数
    形式: operator type(),返回type类型数据
class A
{
explicit A(int a);
operator int();
}
    注意:类类型转换后不可再跟另一个类类型转换

 显示转换
dynamic_cast
static_cast
const_cast
reinterpret_cast


阅读(1199) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~