static_cast、dynamic_cast reinterpret_cast和const_cast

August 3rd, 2013 by JasonLe's Tech Leave a reply »

关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。

 

最容易理解的解释:

   dynamic_cast:   通常在基类和派生类之间转换时使用;
  const_cast:   主要针对const和volatile的转换.   
  static_cast:   一般的转换,如果你不知道该用哪个,就用这个。   
  reinterpret_cast:   用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。