C++ 神奇语法
  • 板块灌水区
  • 楼主野生林登万
  • 当前回复20
  • 已保存回复20
  • 发布时间2023/10/17 15:59
  • 上次更新2023/11/2 13:17:23
查看原帖
C++ 神奇语法
369942
野生林登万楼主2023/10/17 15:59
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 的类内重载也会被识别为成员函数?这真的不算漏洞吗?

2023/10/17 15:59
加载中...