我在某些来源中读到,如果我们按operator+
实施operator=+
,那么我们就没有将operator+
定义为“朋友”。
有人可以解释一下吗?
答案 0 :(得分:1)
一个想法是避免重复的代码。见这个例子:
operator+
然后,您可以operator+=
实现A operator+(const A& lhs, const A& rhs) { A tmp(lhs); tmp += rhs; return tmp; }
,为自己保存重复的代码,并将其保留为免费功能:
+=
这意味着您现在有两个功能。如果您更改+
的含义,ref
的含义也会发生变化。更易于维护。