问题标签 [operator-overloading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 为什么'='不能在C#中重载?
我想知道,为什么我不能在 C# 中重载“=”?我能得到更好的解释吗?
c++ - 重载运算符 << - C++
背景
我有一个在内部使用 vector<std::string> 的容器类。我为这个包装类提供了一个方法AddChar(std::string) ,它对内部向量执行push_back() 。在我的代码中,有时我必须向容器中添加多个项目。为此我必须使用
这使得代码更大。所以为了让它更容易,我打算重载操作符<<。这样我就可以写了
两个项目将被添加到基础向量中。
这是我用来做的代码
它按预期工作。
问题
- 运算符重载是否正确编写?
- 在这种情况下重载运算符是一种好习惯吗?
- 这段代码会有任何性能问题或任何其他问题吗?
有什么想法吗?
编辑
在听到优秀的评论后,我决定不超载 << 因为它在这里没有意义。我删除了运算符重载代码,这是最终代码。
这允许我添加
在 C# 中,我可以通过使用 params 关键字更轻松地做到这一点。代码会像
我知道在 C++ 中,我们可以使用...来指定参数的可变长度。但是 AFAIK,它不是类型安全的。那么这样做是推荐的做法吗?这样我就可以写了
感谢您的回复。
c++ - C++:从类内访问 operator[] 的便捷方式?
operator[]
我有一个重载数组下标/括号运算符的 C++ 类。这在我的课外非常方便,我可以在那里写foo[bar
]。但是,当我在我的类中实现方法时,我不知道如何使用这种表示法。
我知道我可以写operator[](bar)
,this->operator[](bar)
但是这些都相当笨拙,并且首先剥夺了操作员的很多便利。(我也知道我可以添加一个调用运算符的新方法。)有没有一种我可以编写this[bar]
或this->[bar]
类似的好方法?
c++ - 使用运算符重载 C++ 进行监控
我想编写一个所有运算符重载的包装类,以便我可以检测我们何时写入/读取或修改其内容。例如:
有人已经这样做了吗?如果不是,我必须重载哪些运算符以确保我不会错过任何内容?
c# - 重载operator==后,如何比较两个变量是否指向同一个对象?
重载比较运算符,如果两个变量指向同一个对象(即不是值)如何比较
c++ - 重载 << 运算符 C++ - 指向类的指针
工作正常,但我想使用指向类实例的指针。IE
这可能吗?如果是这样,语法是什么?谢谢
编辑:编译器错误是
c++ - std::copy 到 std::cout 用于 std::pair
我有下一个代码:
在这段代码中,我只想将映射复制到输出流。为此,我需要定义运算符 <<(..) - 好的。但是根据名称查找规则编译器找不到我的操作符<<()。
因为 std::cout、std::pair 和 std::copy 调用了我的 operator<< - 都来自命名空间 std。
快速解决方案 - 将我的 oerator<< 添加到 std 命名空间 - 但它很难看,恕我直言。
您知道此问题的哪些解决方案或解决方法?
c++ - 在 C++ 中重载全局运算符 new/delete
我正在尝试为性能敏感的应用程序重载全局运算符 new 和 delete。我已阅读http://www.informit.com/articles/article.aspx?p=30642&seqNum=3中描述的问题以及使用英特尔 TBB 分配器的建议http://www.intel.com/technology/itj/ 2007/v11i4/5-foundations/5-memory.htm
由于我是第一次重载 new 和 delete,所以我有几个问题。
我是否应该在所有包含“新”调用的文件中包含包含重载新函数的新标头 Allocator.h(或 Pre.h)?这很乏味。
或者我应该在每个翻译单元中使用包含 Allocator.h(之前)的“gcc -include Allocator.h ...”吗?我想尽可能地保持代码平台独立。所有编译器都支持类似于“gcc -include”的东西吗?
c++ - 重载算术运算符
赋值运算符可以声明为
T& 运算符= (const t&);
在一个类中,但不能以这种方式定义算术运算符。它必须是朋友功能。我不明白为什么?你能解释一下吗?
c# - C# 模拟覆盖赋值运算符 (=)
我有一个有点简单的包装类有一点问题。
它看起来像这样:
我已经覆盖了从和到 T 的隐式转换器,所以它的行为几乎就像 T 本身的一个实例。
例如
但是,在将 Wrapper 的一个实例分配给另一个时,我遇到了一个小问题,因为我只想分配第二个 Wrapper 类的值。
所以现在,我必须这样做:
或者通过属性公开 _value。
但是,由于这是在库中,并且我不希望用户依赖于记住这一点,你们知道我如何模仿覆盖赋值运算符吗?
仅更改指针的问题(就像将类实例分配给另一个时所做的那样)是我有一个指向这些 Wrapper 对象的指针字典,因此我不能一直更改它们,因为字典会停止然后匹配。
我可以看看这是否有点令人困惑,所以如果我遗漏了任何重要的内容,请随时询问:-)