dynamic_cast:   通常在基类和派生类之间转换时使用,把一个派生类转换为基类使用这个转换    
  const_cast:   主要针对const和volatile的转换.  相当于去掉const变量前的const     
  static_cast转换类似于C/C++里面的强制类型转换。      
  reinterpret_cast:   用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。

示例程序:

#include "algostuff.hpp"//见http://www.cnblogs.com/qnbs1/articles/1709197.html
using namespace std;
class MeanValue
{
private:
 long num;
 long sum;
public:
 MeanValue():num(0),sum(0)
 {

 }
 void operator() (int elem)
 {
  num++;
  sum+=elem;
 }
 operator double()
 {
  return static_cast<double>(sum)/static_cast<double>(num);
 }
};

int main()
{
 vector <int> coll;
 INSERT_ELEMENTS(coll,1,8);

 double mv=for_each(coll.begin(),coll.end(),MeanValue());
 cout<<"mean value: "<<mv<<endl;
}

结果:mean value:4.5

解释:将1 2 3 4 5 6 7 8加起来保存在sum中,num里保存了数字的个数(8),将sum num转换成double型再相除

posted on 2010-04-10 20:36  蓝牙  阅读(137)  评论(0编辑  收藏  举报