C++ 中的运算符 T*(其中 T 是模板参数)是什么?

2024-04-09

class NullClass{
    public:
    template<class T>
        operator T*() const {return 0;}

};

我正在阅读《Effective C++》,我遇到了这个类,我实现了这个类并编译了它。对此我有几个疑问:

  1. 它没有返回类型。

  2. 这个运算符是什么。

  3. 以及它的实际作用。


这就是类型转换运算符。它定义了类的实例和指定类型之间的隐式转换(此处T*)。它的隐式返回类型当然是相同的。

Here a NullClass例如,当提示转换为任何指针类型时,将产生隐式转换0到所述类型,即该类型的空指针。

附带说明一下,转换运算符可以明确显示:

template<class T>
explicit operator T*() const {return 0;}

这避免了隐式转换(这可能是错误的微妙来源),但允许使用static_cast.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的运算符 T*(其中 T 是模板参数)是什么? 的相关文章

随机推荐