C++类型转换
2014-01-15 16:08
204 查看
一直觉得没写的必要,但还是记一下吧。太书面化记不住,就简单些下。
类型转换分为隐式类型转换和强制类型转换。
隐式类型转换是编译器自动执行,无需程序员介入。如下:
强制转换就是要在代码中写明的转换,具有危险性。
C风格是:(type) xx;C++提供了四种转换:static_cast、dynamic_cast、reinterpret_cast、const_cast。
static_cast<type-id>(expression)
编译时期进行的转换,没有运行时的类型检查。常用于:
1.基类和子类之间的下行转换
2.void*到原来指针的转换
3.避免出现可能多种转换的歧义
dynamic_cast<type-id>(expression)
运行时期的类型转换,用于将基类类型的指针或引用安全的转换为子类类型的指针或引用,有类型检查的功能,比较安全。
当转换指针类型失败时,返回0;当转换引用类型失败时,抛出bad_cast异常。
常用于类层次间的上下行转换,主要的场景是无法使用virtual函数-使用子类自己新增的函数
类型转换分为隐式类型转换和强制类型转换。
隐式类型转换是编译器自动执行,无需程序员介入。如下:
//算术转换 double b = 5 + 3; //条件表达式 int val = 0; if (val)... ...
强制转换就是要在代码中写明的转换,具有危险性。
C风格是:(type) xx;C++提供了四种转换:static_cast、dynamic_cast、reinterpret_cast、const_cast。
static_cast<type-id>(expression)
编译时期进行的转换,没有运行时的类型检查。常用于:
1.基类和子类之间的下行转换
2.void*到原来指针的转换
3.避免出现可能多种转换的歧义
dynamic_cast<type-id>(expression)
运行时期的类型转换,用于将基类类型的指针或引用安全的转换为子类类型的指针或引用,有类型检查的功能,比较安全。
当转换指针类型失败时,返回0;当转换引用类型失败时,抛出bad_cast异常。
常用于类层次间的上下行转换,主要的场景是无法使用virtual函数-使用子类自己新增的函数
相关文章推荐
- C++中,int和char互转函数_itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- 用标准C++进行string与各种内置类型数据之间的转换
- C++类型强制转换<转>
- 浅谈C++中用函数重载实现类型转换
- C++ int类型和string类型的相互转换
- C++ 四种类型转换操作符
- c++中的类型转换,static_cast,reinterpret_cast,boost::lexical_cast
- Halcon 与 C++ 的类型转换
- C++四种类型的转换
- C#调用C++的DLL搜集整理的所有数据类型转换方式
- C++中的向上类型转换和向下类型转换
- C++内置数字数据类型与string间的转换--以double为例
- c++ 类型转换
- 尽量使用C++风格的类型转换
- C/C++ 类型转换
- [C++] Type Conversion(类型转换)
- 隐式类型转换c/c++
- C++ 隐式类类型转换和转换操作符
- [转载] 标准C++的四种强制转换类型运算符
- C++中的类型转换