为啥 ~= 在 C++ 中缺少唯一的非逻辑赋值运算符? [关闭]

Posted

技术标签:

【中文标题】为啥 ~= 在 C++ 中缺少唯一的非逻辑赋值运算符? [关闭]【英文标题】:Why is ~= the only non-logical assignment operator missing in C++? [closed]为什么 ~= 在 C++ 中缺少唯一的非逻辑赋值运算符? [关闭] 【发布时间】:2016-12-20 11:57:50 【问题描述】:

出于好奇,为什么位运算符 ~ 是唯一一个在 C++ 中没有赋值版本的非逻辑运算符,即 ~=?所有关系和位运算符都有一个赋值版本,但缺少~=。有什么特别的原因吗?

对于 C++ 中的所有运算符,例如:http://www.tutorialspoint.com/cplusplus/cpp_operators.htm

【问题讨论】:

这是一个一元运算符...这意味着什么? Binary 运算符自然允许复合分配版本。但是您如何为 unary 运算符提供复合分配版本??? ~ 是一元的。例如,一元 - 是非逻辑的,也没有赋值版本。 我不明白为什么投反对票。这是一个合理的问题,是对语言功能的好奇。 This is a legitimate question 不,不是。一元运算没有意义 @SeverinPappadeux 如果是这样,它不会使问题不合法。一个好的答案可以解释这一点以及为什么会这样。如果用户要提前知道事情,用户就不会提出问题。 【参考方案1】:

进行复合赋值的所有运算符都是二元。另一方面,波浪号是一元,因此没有简单的方法可以从中进行复合赋值,因为右侧没有任何内容。

其他一元操作数,例如一元减号和逻辑 NOT ! 运算符,也没有复合赋值。

【讨论】:

@DimChtz 这正是让我想知道~= 案例以及它如何以及是否可以具有赋值运算符的原因。 @DimChtz 这就是答案所说的 - 没有基于 ! 的复合赋值(不等式运算符完全不同)。

以上是关于为啥 ~= 在 C++ 中缺少唯一的非逻辑赋值运算符? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 2010 / QT:为啥调用类的赋值运算符?

C++ 为啥赋值运算符应该返回一个 const ref 以避免 (a=b)=c

为啥我们在赋值运算符重载中使用引用返回而不是在加减运算中?

为啥赋值运算符要返回对对象的引用?

为啥我们在重载赋值中使用 return *this? [复制]

C++:为向量中的非连续索引赋值?