class NullClass{
public:
template<class T>
operator T*() const {return 0;}
};
我正在阅读《Effective C++》,我遇到了这个类,我实现了这个类并编译了它。对此我有几个疑问:
它没有返回类型。
这个运算符是什么。
以及它的实际作用。
这就是类型转换运算符。它定义了类的实例和指定类型之间的隐式转换(此处T*
)。它的隐式返回类型当然是相同的。
Here a NullClass
例如,当提示转换为任何指针类型时,将产生隐式转换0
到所述类型,即该类型的空指针。
附带说明一下,转换运算符可以明确显示:
template<class T>
explicit operator T*() const {return 0;}
这避免了隐式转换(这可能是错误的微妙来源),但允许使用static_cast
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)