我在代码中定义了一个结构体如下:
struct Node{
int l,r;
ll v;
Node(){l=r=-1,v=LINF;}
Node(int _l,int _r,ll _v){l=_l,r=_r,v=_v;}
bool operator < (const Node &x)const{
return v<x.v;
}
};
然后又定义了一个结构体,其中定义了这样一个运算:
struct Info{
Node v;
Info operator + (const Info &x)const{
Node mn=min(v,x.v);
...
}
}
这是可以正常编译的,但是如果将 Node 中 < 的 const 去掉,即变成:
bool operator < (const Node &x){
return v<x.v;
}
就不能正常编译了,请问这是什么原因?以及这个 const 起到了什么作用?