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型再相除