在函数中以意外方式使用的运算符关键字

时间:2011-04-26 15:19:45

标签: c++

我最近遇到了这个代码,它是模板类的一部分:

operator T*();

我无法在SO或网上找到关于此的澄清。我一直无法弄清楚这个声明是如何运作的。

2 个答案:

答案 0 :(得分:3)

它是一个隐式转换运算符,允许将对象转换为T *。

例如:

template<typename T>
class arrayOf10T
{
    T data[10];

    operator T*()
    {
        return data;
    }
};

允许您将arrayOfT转换为int *,如下所示:

int* ptr = arrayOf10T<int>;

答案 1 :(得分:2)

这声明从类的类型到T*隐式转换(即指向T的指针)。

使用这样的运算符,您的类(我们称之为foo)可以按如下方式使用:

foo<int> f;
int *i = f; // calls f.operator int*()