与C语言比,C++提供四种新式转型动作:
1.const_cast<T> (expression)
2.dynamic_cast<T> (expression)
typedef std::vector<std::tr1::shared_ptr<Window> > VPW;
VPW winPtrs;
...
for(VPW::iterator iter = winPtrs.begin();iter!=winPtrs.end();iter++)
{
}
我们应该这样做:
typedef std::vector<std::tr1::shared_ptr<SpecialWindow> > VPSW;
VPSW winPtrs;
...
for(VPSW::iterator iter = winPtrs.begin();iter!=winPtrs.end();iter++)
{
}
第二、对于上面的问题,我们可以采用虚函数实现
我们这里强调的是尽量不要使用转型
3.reinterpret_cast<T> (expression)
4.static_cast<T> (expression)