【问题标题】:operator& that returns an int and operates on 2 vectors?operator& 返回一个 int 并对 2 个向量进行操作?
【发布时间】:2020-09-16 04:11:52
【问题描述】:

我想在两个std::vector<int> 之间定义一个& 运算符。此运算符应按位将两个向量的每个元素放在一起,并返回结果向量的非零分量的数量。

但是,如果我定义int operator&(const std::vector<int> &lhs, const std::vector<int> &rhs),编译器不喜欢它,需要operator& 返回一个布尔值。这实际上是operator& 的限制吗?

【问题讨论】:

标签: c++ operator-overloading


【解决方案1】:

我想在两个 std::vector<int> 之间定义一个 & 运算符。

您可能不会(至少不是全局性的;理论上可以在自定义命名空间中完成,但我建议不要这样做)。没有用户定义类型参数的标准模板的运算符重载保留给标准库。

我建议改为编写一个常规函数。

知道为什么会有这种限制吗?

因为此限制允许标准库更改和添加委员会希望的任何运算符重载,而不会破坏先前定义良好的程序,这些程序具有自己的冲突重载(由于不允许定义此类重载)。


operator& 返回一个布尔值。这实际上是对 operator& 的限制吗?

没有。这实际上不是二元运算符&的限制。它可能会返回int

【讨论】:

  • 知道为什么会有这个限制吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 2011-06-15
  • 2023-02-13
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
相关资源
最近更新 更多