implicit_cast
implicit_cast :
背景 这个类型转换函数 经查是google写的一个类型转换函数 具体有什么用呢?
现在翻译官方说明:
1. 用implicit_cast可以实现 一种 static_cast 或者 const_cast在向上转型时的安全版本。(例如 : 将Foo指针转换为 SuperclassOfFoo 或者 将 Foo 指针转换为const Foo)
注: 向上安全转型指的是派生类向基类的转型。
2. 当你使用implicit_cast的时候,编译器会检查相应的转换是否安全。
这样的隐式转换implicit_cast在 C++中需要完全类型匹配而非将一个参数类型转换为目标类型 时显得十分有用
3. From的类型可以被推断, 所以implicit_cast推荐的使用方法和static_cast一样:
implicit_cast<ToType> (expr)
4. 函数原型:
template<typename To, typename From>
inline To imolicit_cast(Frome const &f)
{
return f;
}
总结 : 这就是一个向上安全转型的用法 ,因为如果用static_cast的话可能因为纵容其它的转换而出错。
参考:
https://blog.csdn.net/xiaoC_fantasy/article/details/79570788
安全的向下转型的函数
template<typename To, typename From> // use like this: down_cast<T*>(foo);
inline To down_cast(From* f)

浙公网安备 33010602011771号