前端之家收集整理的这篇文章主要介绍了
什么是C中的运算符T *(其中T是模板参数)?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
class NullClass{
public:
template<class T>
operator T*() const {return 0;}
};
我正在阅读Effective C,我遇到了这个类,我实现了这个类,它编译了.我有点怀疑:
>它没有返回类型.@H_301_7@>这是什么操作符.@H_301_7@>以及它实际上做了什么.
那是类型转换运算符.它定义了类的实例和指定类型(此处为T *)之间的隐式转换.它的隐式返回类型当然是相同的.
这里,当提示转换为任何指针类型时,NullClass实例将产生从0到所述类型的隐式转换,即该类型的空指针.
另外,转换运算符可以明确:
template<class T>
explicit operator T*() const {return 0;}
这可以避免隐式转换(可能是错误的微妙来源),但允许使用static_cast.
原文链接:https://www.f2er.com/c/118633.html