重载运算符以与 C++ 中的另一个类一起使用

Overloading operator to use with another class in C++

本文关键字:另一个 一起 运算符 C++ 重载      更新时间:2023-10-16

有没有办法重载>(大于)运算符,以便能够执行以下操作:

myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(a > b) //it should compare the int values from the constructors
  //do something

我尝试重载运算符,但出现各种错误。我正在使用VC++。

不能重

载指针的运算符,因为它们是基元类型(并且不能在两个参数都是基元类型的情况下创建重载); 相反,您可以重载用户定义类型的对象(而不是指向它们的指针)的运算符:

class myClass
{
    // ...
public:
    bool operator>(const myClass & right) const
    {
        return this->whatever()>right.whatever();
    }
};
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(*a > *b) //it should compare the int values from the constructors
  //do something

请注意,如果您没有特定的理由在堆上分配内容,那么最好将其分配给堆栈:

myClass a(1);
myClass b(3);
if(a > b)
    // do something

尝试

class MyClass
{
    int value;
    public:
        bool operator>(MyClass const& rhs) const
        {
             return value > rhs.value;
        }
        MyClass(int v):value(v){}
};
int main()
{
     MyClass a(1);
     MyClass b(3);
     if (a > b) { PLOP } else { POOP }
}
相关文章: