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

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

};

我正在阅读Effective C,我遇到了这个类,我实现了这个类,它编译了.我有点怀疑:

>它没有返回类型.
>这是什么操作符.
>以及它实际上做了什么.

解决方法

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

这里,当提示转换为任何指针类型时,NullClass实例将产生从0到所述类型的隐式转换,即该类型的空指针.

另外,转换运算符可以明确:

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...