运营商的例子 - >超载

时间:2014-03-07 04:41:27

标签: c++ operator-overloading

我想尝试重载“ - >”。根据教程,签名将是A :: operator->()以反映a-> b。

该功能如何识别要操作的成员?

我认为它可以返回指向类,对象或引用的指针。对此有何警告,例如:处理智能指针属性等。

1 个答案:

答案 0 :(得分:1)

template<class T>
class PointerObject
{
public:
    PointerObject(T* p)
        : _p(p)
    {}

    T* operator ->()
    {
        return _p;
    }

private:
    T* _p;
};

struct A
{
    int x, y;
};

int main()
{
    A a;
    PointerObject<A> po(&a);
    po->x = 1;
    po->y = 1;
}