c++中指针操作符可以重载吗?

Can pointer operators be overloaded in C++?

本文关键字:重载 指针 操作符 c++      更新时间:2023-10-16

可以为类指针重载操作符=吗?这个例子试图重载指针'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 -> Krait'应该是'1'。

不能,不能使用只接受指针作为参数的非成员重载操作符函数:

操作符函数要么是非静态成员函数,要么是非成员函数,并且至少有一个形参的类型是类、类的引用、枚举或枚举的引用。