指针运算符可以在C ++中重载吗?

时间:2013-03-14 18:02:02

标签: c++

运算符=是否可以为类指针重载。此示例尝试为指针'Cutie *'重载'operator =':

class Cutie    
{
public:
    int Krait;

    Cutie() : Krait(0)
    {
    }
};

Cutie* operator = (Cutie* p, Cutie* q)
{
    if(p == 0)
    {
        if(0 < Krait)
            Krait--;
    }
    else
        Krait++;
}

上述定义有错误。我正在寻找一个计算指针分配的定义:

Cutie c;
Cutie* p = 0;
p = &c;

现在'p - &gt; Krait'应该是'1'。

1 个答案:

答案 0 :(得分:5)

不,你不能拥有一个只使用指针作为参数的非成员重载操作符函数:

  

运算符函数应该是非静态成员函数或者是非成员函数,并且至少有一个参数,其类型是类,对类的引用,枚举或对枚举的引用。