C++类型转换

c强制转换与c++强制转换
c语言强制类型转换主要用于基础的数据类型间的转换,语法为:
(type-id)expression//转换格式1

type-id(expression)//转换格式2
c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为:
static_cast (expression)
dynamic_cast (expression)
const_cast (expression)
reinterpret_cast (expression)
备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。
 Static_cast
Static_cast相当于传统的C语言里的强制转换,该运算符把expression转换成new_type类型,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非多态的转换,可以转换指针或其他,但没有运行时类型检查来保证转换的安全。它主要有如下几种用法:

  1. 用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
    进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
    进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检 查, 所以是不安全的。
  2. 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
  3. 把空指针转换成目标类型的空指针
  4. 把任何类型的表达式转换成void类型。
    注意;static_cast不能转换掉expression的const、voliatile、或者__unaligned属性。
    基本类型数据转换举例:
    char a = ‘a’;
    int b = static_cast(a);//正确,将char型数据转换成in

你可能感兴趣的:(c++学习,类型转换)