C++ operator 重载操作符

operator是c++中的重载操作符,可对操作符进行重载,将operator=作为一个整体进行运算。运算的数据类型是用户自定义的数据类型class。

声明一个重载运算符

  • 运算符重载实现为类成员函数
class person{
private:
    int age;
public:
    person(int a){
        this->age = a;
    }
    inline bool operator == (const person &ps) const;
};

//实现方式
inline bool person :: operator == (const person &ps) const
{
    if(this -> age == ps.age)
        return true;
    return false;
}

//调用方法
int main()
{
    person p1(10);
    person p2(20);
    if(p1 == p2) 
        cout << " OK " << endl;
    return 0;
}

因为operator == 是class person的一个成员函数,所以对象p1,p2都可以调用该函数。if(p1 == p2) ,相当于p1调用函数 == ,把p2作为函数的一个参数传递给该函数,从而实现了两个对象的比较。

  • 操作法重载实现为非类成员函数(全局函数)

对于全局重载操作符,代表左操作数的参数必须被显式指定。

class person
{
    public:
        int age;
    private:
};

bool operate==(person const &p1,person const &p2)
{
    if(p1->age == p2-> age)
        return true;
    return false;
}

int main()
{
    person rose;
    person jack;
    rose.age = 11;
    jack.age = 23;
    if(jack == rose)
        cout << "OK" << endl;
    return;
}
  • 如何决定把操作符重载为类成员函数还是全局名字空间的成员呢?

如果一个重载操作符是类成员,那么只有当与他一起使用的左操作数十该类的对象是,该操作符才会被调用。如果该操作符的左操作符必须是其他的类型,则操作符必须被重载为全局名字空间的成员。

猜你喜欢

转载自blog.csdn.net/u013539952/article/details/82191495