成员运营商

时间:2015-06-06 12:20:34

标签: c++ operator-overloading

我有这个链接http://www.codingunit.com/unary-and-binary-operator-table。它说指向成员运算符的指针是二元运算符

我有这段代码:

class test
{
public:
    int num;
    test(int j)
    {
        num=j;
    }
    test* operator->()
    {
        this->num;
    }
};

int main()
{
    test T(5);
    cout<<"Number is :"<<T->num;
}

据我所知,二元运算符的非静态成员函数接受一个参数,但是根据这个程序,如果我提供一个参数。它有一个错误,表示 test * operator - &gt;(int x)应该是 test * operator - &gt;( void

1 个答案:

答案 0 :(得分:0)

要获得预期结果,您需要按如下方式更改程序:

test* operator->()
{
    return this;
}
};

int main()
{
test T(5);
cout<<"Number is :"<<T->num;
}

在运算符重载函数中,应返回this指针。由于->的运算符重载函数不接受参数,因此当您调用它时,不需要传递参数值。所以函数调用应该是T->num;