1.       C风格类型转换
TYPE  xxx  = (TYPE)expression ;
比如
        int *  pnTest = new int[count];
        char * pchTest = (char*)pnTest ;
 
2.       C++风格类型转换
1.)      const_cast(expression)
一般用于强制消除对象的常量性。
比如:
        const char * pchTestConst = XXX ;
        char * pchTest = const_castpchTestConst ;
2.)      dynamic_cast(expression)
用于对象的指针和引用,在多态下用于父子类之间的向下安全转换,同时带来重大的运行期代价。
比如:
        class A { } ;
class B : public A { } ;
 
A * pA1 = new B ;
A * pA2 = new A ;
 
// 指针转换
B * pB1 = dynamic_cast(pA1) ; // 成功,因为pA1本来就指向的是B对象.
B * pB2 = dynamic_cast(pA2) ; // 失败,pB2 = NULL .
 
// 引用转换
B b1 = dynamic_cast(pA1) ; // 成功.
B b2 = dynamic_cast(pA2) ; // 失败,抛出一个bad_cast的异常.
 
3.)      reinterpret_cast(expression)
转换过程中不做任何类型检查和转换,只是转换对二进制的解释!
比如:
        class A { } ;
        class B { } ;
 
        A * pA = new A ;
        B * pB = reinterpret_cast(pA) ; // 此时,pA pB将拥有同样的值(地址).
             
4.)      static_cast(expression)
类似于C风格的类型转换,用于非多态转换。
比如:
        double  dbTest = 5.0123 ;
        int nTest = static_castdbTest ; // 此时,nTest == 5 .