我在网上找到了一段代码。但我不明白第二个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;
}
};
任何人都可以解释其目的吗?谢谢!
答案 0 :(得分:1)
bool operator < (const Node &obj) const {
第一个const
表示obj
由const引用传递。这意味着obj
不应在此operator <
函数中更改。
第二const
表示这是一个const成员函数。这意味着operator <
函数不会更改对象本身的状态(包括其所有数据成员:row, col, val
)。
const
都是编译器捕获意外更改(错误)的措施:对参数的更改或对对象状态本身的更改。