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)  
posted @ 2020-09-02 18:16  熊鑫xxx1x  阅读(1209)  评论(0)    收藏  举报