c++ - 重载较少,然后运算符返回相反的 bool 值

标签 c++ operator-overloading

我在Booking类中重载了less运算符。

#include <iostream>
using namespace std;

class Booking{

private:
long bookingID;

public:
Booking(long bookingID) : bookingID(bookingID){}
long getBookingID(){
    return bookingID;
}

bool operator<(Booking &b){
    return this->bookingID<b.getBookingID();
}
}



int main(){
  Booking* b2 = new Booking(11);
  Booking* b1 = new Booking(2);

  cout << (b1<b2) << endl; // returns 0 (expected 1)
  cout << (b2<b1) << endl; // returns 1 (expected 0)

  return 0;
}
有什么问题还是我误会了什么?

最佳答案

您正在比较的是指针,而不是对象。
您的意思是:

Booking b2( 11);
Booking b1( 2);

cout << (b1<b2) << endl; // returns 1, as expected
cout << (b2<b1) << endl; // returns 0, as expected

关于c++ - 重载较少,然后运算符返回相反的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62715357/

相关文章:

c++ - 在 Internet Explorer_Server (IWebBrowser2) 上拦截 WM_COMMAND(从加速器发送)

C++:重载下标运算符(不同的返回类型)

c++ - 如何使运算符重载在友元函数中正常工作?

c++ - 有没有办法让 operator= 用于枚举?

c++ - 如何在类中实现提取运算符?

C++ 运算符 <<(char) 但输出但为 hexa/int

c# - 来自非托管内存的 byte[] 数组

c++ - 拦截c++异常

C++ 模板 + 迭代器(菜鸟问题)

C++,在字符串的特定位置插入子字符串