【问题标题】:Overloaded less then operator returns the opposite boolean value重载的小于运算符返回相反的布尔值
【发布时间】:2020-07-03 12:21:22
【问题描述】:

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

#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;
}

有什么问题?还是我误会了什么?

【问题讨论】:

  • 您在比较指针,而不是它们指向的值。试试(*b1&lt;*b2)

标签: c++ operator-overloading


【解决方案1】:

你是在比较指针,而不是对象。

你的意思是:

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

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

【讨论】:

  • @Nime 为什么?在您发布的代码中,唯一的影响是您泄漏了内存,而不是可取的
  • @idclev463035818 我正在实现一个带有排序插入的模板排序链表。这就是为什么我需要 less then 运算符。预订是一个基类。我必须使用指针。它在分配中指定并防止对象切片...
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多