class NullClass{
public:
template<class T>
operator T*() const {return 0;}
};
我正在阅读Effective C ++并且遇到了这个类,我实现了这个类并且它编译了。我对此有一些疑问:
它没有返回类型。
这是什么操作员。
以及它实际上做了什么。
答案 0 :(得分:11)
那是类型转换运算符。它定义了类的实例与指定类型(此处为T*
)之间的隐式转换。它的隐式返回类型当然是一样的。
此处NullClass
实例在提示转换为任何指针类型时,将产生从0
到所述类型的隐式转换,即该类型的空指针。
另外,转换运算符可以明确:
template<class T>
explicit operator T*() const {return 0;}
这可以避免隐式转换(可能是错误的微妙来源),但允许使用static_cast
。