问题标签 [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# - 如何在没有无限递归的情况下检查“==”运算符重载中的空值?
以下将导致 == 运算符重载方法的无限递归
如何检查空值?
java - 为什么 Java 不提供运算符重载?
从 C++ 到 Java,显而易见的未解决问题是为什么 Java 不包含运算符重载?
不是Complex a, b, c; a = b + c;
比 简单得多Complex a, b, c; a = b.add(c);
吗?
是否有一个已知的原因,不允许运算符重载的有效参数?原因是随意的,还是被时间遗忘了?
c# - 编写等于运算符时处理 null 的最佳方法
当我为对象重载 == 运算符时,我通常会编写如下内容:
如果您不向下转换为对象,则该函数会递归到自身,但我想知道是否没有更好的方法?
ruby - 为什么 Ruby 只允许某些运算符重载
在 Ruby 中,与许多其他 OO 编程语言一样,运算符是可重载的。但是,只能重载某些字符运算符。
此列表可能不完整,但以下是一些不能重载的运算符:
c# - 比较引用类型的两个实例的“最佳实践”是什么?
我最近遇到了这个问题,到目前为止,我一直很高兴地覆盖相等运算符(==)和/或Equals方法,以查看两个引用类型是否实际上包含相同的数据(即看起来相同的两个不同实例)。
自从我更多地参与自动化测试(将参考/预期数据与返回的数据进行比较)以来,我一直在使用它。
在查看MSDN 中的一些编码标准指南时,我遇到了一篇反对它的文章。现在我明白这篇文章为什么这么说(因为它们不是同一个实例)但它没有回答这个问题:
- 比较两种引用类型的最佳方法是什么?
- 我们应该实现IComparable吗?(我还看到有人提到这应该只为值类型保留)。
- 有什么我不知道的接口吗?
- 我们应该自己动手吗?!
非常感谢^_^
更新
看起来我误读了一些文档(这是漫长的一天)并且覆盖Equals可能是要走的路..
如果您正在实现引用类型,如果您的类型看起来像 Point、String、BigNumber 等基本类型,则应考虑覆盖引用类型上的 Equals 方法。大多数引用类型不应重载相等运算符,即使它们覆盖 Equals也是如此。但是,如果您正在实现旨在具有值语义的引用类型,例如复数类型,则应覆盖相等运算符。
c++ - 如何防止通过“新”运算符分配类?(我想确保我的 RAII 类始终分配在堆栈上。)
我想确保我的 RAII 类始终分配在堆栈上。
如何防止通过“新”运算符分配类?
python - 如何根据参数类型重载 __init__ 方法?
假设我有一个类,它有一个名为 data 的成员,它是一个列表。
我希望能够使用例如文件名(其中包含用于初始化列表的数据)或实际列表来初始化类。
你这样做的技术是什么?
你只是通过查看来检查类型__class__
吗?
我可能会错过一些技巧吗?
我习惯了 C++ 中的参数类型重载很容易。
c# - .NET 泛型中重载运算符约束的解决方案
如果我想要一个只接受重载运算符的类型的泛型方法,例如减法运算符,我会怎么做。我尝试使用接口作为约束,但接口不能有运算符重载。
实现这一目标的最佳方法是什么?
c++ - C++ 中的命名空间和运算符重载
在特定命名空间中编写库时,为该命名空间中的类提供重载运算符通常很方便。似乎(至少在 g++ 中)重载的运算符可以在库的命名空间中实现:
或全局命名空间
根据我的测试,它们似乎都运行良好。这两个选项之间有什么实际区别吗?哪种方法更好?
c# - 使用 C# 扩展方法的运算符重载
我正在尝试使用扩展方法向 C#StringBuilder
类添加运算符重载。具体来说,给定StringBuilder
sb
,我想sb += "text"
等效于sb.Append("text")
。
下面是创建扩展方法的语法StringBuilder
:
它成功地将blah
扩展方法添加到StringBuilder
.
不幸的是,运算符重载似乎不起作用:
除其他问题外,this
此上下文中不允许使用关键字。
是否可以通过扩展方法添加运算符重载?如果是这样,正确的方法是什么?