是否可以设计以及如何重载operator+
为我的班级C
使这成为可能:
C&& c = c1 + c2;
但这是不可能的:
c1 + c2 = something;
编辑:
我把物体改成了小写字母。c1
, c2
and c
是类的对象C
. &&
不符合逻辑operator&&
,而是一个右值引用。
例如写:
double&& d = 1.0 + 2.0;
是 100% 正确的(新的)C++ 代码,而
1.0 + 2.0 = 4.0;
显然是编译器错误。我想exactly相同,但对于我的班级来说是双倍的C
.
第二次编辑:如果我的运算符返回 C 或 C&,我可以对右值引用进行赋值,但也可以对 c1 + c2 进行赋值,这是毫无意义的。在这里给出 const 会禁用它,但它也会禁用对右值的分配。至少在 VC++ 2k10 上是这样。那么这有多少倍呢?
让赋值运算符只能在左值上调用:
class C
{
// ...
public:
C& operator=(const C&) & = default;
};
请注意右括号后面的单个 & 符号。它阻止分配给右值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)