超载 =具有多个术语的运算符

overloaded += operator with multiple terms

本文关键字:术语 运算符 超载      更新时间:2023-10-16

我有一个两个类,一个分子和一个具有重载运算符 =, 和 *的单个_ATOM类。 只要两个操作数是分子或原子。*与原子或分子和int一起使用,并且可以逆转。 =仅在操作数是单个分子或原子时起作用,但应能够消除复合物表达式。我如何合并 =以使以下有效:

single_atom a1("sulpher");
single_atom a2("mercury");
Molecule m1(a1);
m1 += 3 * a1 + a2 * 4;

甚至只是:

m1 += 3 * a1;

整个右侧都需要正确允许临时性,例如

3 * a1

需要

single_atom single_atom::operator*(int value) const;

然后,这将返回一个可以传递到下一个操作的single_atom&&。这将持续到最终您的+=过载,看起来像

single_atom& single_atom::operator+=(single_atom&& rhs)