17.2.2 static_cast操作符

    static_cast的基本语法如下所示。


    static_cast<T>(expr)

    该运算符把expr转换为T型,仅当T类型可被隐式转换成expr所属类型,或expr所属类型可被隐式转换成T类型时,上述转换才合法,否则会报错,主要有如下几种用法。

    ❑用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。

    ❑用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。

    ❑把空指针转换成目标类型的空指针。

    ❑把任何类型的表达式转换成void类型。

    注意

    static_cast不能转换掉expression的const和volitale等属性。

    例如下述转换都是合法的。


    int i=0; double d=static_cast<double>(i);//合法,i可隐式转换成double int j=static_cast<int>(d);//合法,int可隐式转换成double