第二个const在运算符函数中做什么?

时间:2019-11-24 23:39:20

标签: c++ operator-overloading

我在网上找到了一段代码。但我不明白第二个const在运算符函数中的作用:

class Node {
public: 
    int row, col, val;
    Node (int r, int c, int v) : row(r), col(c), val(v) {};
    bool operator < (const Node &obj) const {
        return val > obj.val;
    }
};

任何人都可以解释其目的吗?谢谢!

1 个答案:

答案 0 :(得分:1)

bool operator < (const Node &obj) const {
  • 第一个const表示obj由const引用传递。这意味着obj不应在此operator <函数中更改。

  • 第二const表示这是一个const成员函数。这意味着operator <函数不会更改对象本身的状态(包括其所有数据成员:row, col, val)。

const都是编译器捕获意外更改(错误)的措施:对参数的更改或对对象状态本身的更改。