struct Node{
Segment pre,suf,tot,maxseg;
bool lazy;
}now[MAXN * 4],inv[MAXN * 4];
Node operator+(Node nl,Node nr){
}
class SegmentTree{
}
可以通过编译,而下面这个不行。
class SegmentTree{
private:
struct Node{
Segment pre,suf,tot,maxseg;
bool lazy;
}now[MAXN * 4],inv[MAXN * 4];
Node operator+(Node nl,Node nr){
}
};
提示 'SegmentTree::Node SegmentTree::operator+(SegmentTree::Node, SegmentTree::Node)' must have either zero or one argument,显然把这个运算符重载当做了一个成员函数,可是咱并没有在类内写运算符重载啊?为什么会被识别为成员函数呢?
难道说它只识别是否在类内申明,就算在 SegmentTree 的类内重载也会被识别为成员函数?这真的不算漏洞吗?