问题标签 [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.

0 投票
2 回答
5698 浏览

c++ - 如何在 C++ 中定义友元函数和运算符重载

我想了解 C++ 中的友元函数和运算符重载以及它们是如何工作的?与程序?

0 投票
4 回答
32189 浏览

c++ - 为什么你不能超载'。' C++ 中的运算符?

能够重载 . C++ 中的运算符并返回对对象的引用。

你可以超载operator->operator*但不能operator.

这有技术原因吗?

0 投票
2 回答
985 浏览

c# - 我可以在 C# 中定义类似 Perl 的绑定运算符 (=~) 吗?

我真的很喜欢能够在 Perl 中使用 =~ 和 !~ 来根据正则表达式计算字符串。我想将此功能移植到 C#,但看起来,虽然您可以重载运算符,但您不能创建新的运算符。

我正在考虑扩展字符串类型以提供 Match() 方法,该方法允许我传递正则表达式以进行评估,但我想知道有更好的方法。

有人有更好的解决方案吗?

0 投票
2 回答
141 浏览

c++ - 重载。-> 和 :: 用于多平台类

假设我有三个窗口类,一个用于我想要支持的每个操作系统:

  • 窗口窗口
  • OSX窗口
  • Linux窗口

它们都继承自Window类。这也是您实例化的类。Window 类具有 . -> 和 :: 运算符重载,并且根据运行的操作系统(基于 IFDEF),它会将 this 指针转换为相关类。

我想要做的只是创建一个 Window 实例,而不知道正在运行什么操作系统。这种想法是不是很错误?沮丧是危险的吗?有没有更好的方法来做到这一点?

我知道有图书馆可以做到这一点,但我想自己尝试一下。

我想最简单的方法是创建一个工厂。但是这样的事情可以做到吗?

0 投票
3 回答
2289 浏览

c++ - 为原始类型重载 operator<<。那可能吗?

嘿。是否可以为原始类型重载 operator<< ?Fx 可以说我想写一个 std::endl 每次想写一个 int。我可以为 int 重载 operator<<,以便它自动将 std::endl 放到输出中吗?我试过这个,

但它不起作用。我不记得编译器错误消息,但我认为我让运算符重载所有错误的方式。我尝试以这种方式调用上面的重载运算符<<,

但它根本不起作用。也许我不能重载 POD 类型?

0 投票
6 回答
2126 浏览

c++ - 使用 C++ 模板封装简单类型

我希望为 C++ 中的所有简单类型添加功能。

我想编写一个模板类,它将要封装的类型作为模板参数,然后定义所有运算符,以便封装的类与它封装的简单类型完全一样。

像这样的东西:

问题是我确信必须处理大量细微差别并编写专门的模板运算符;那么是否有任何地方已经完成了这项工作,以便我可以使用它呢?

Boost 太大且太复杂,无法放入我的项目中,但如果那里有这样的类,我可以查看它以获取指针 - 如果有,它的名称是什么?

0 投票
6 回答
405 浏览

c++ - operator>= 重载的奇怪行为

我在 C++ 中使用运算符重载时有一个奇怪的行为。我有一堂课,我需要检查它的内容是否大于或等于 long double。我重载了 >= 运算符来进行这个检查,我的声明如下:

我不得不说,我的班级也有一个 cast-to-long-double 运算符,它仅在某些条件下无例外地工作。现在,当我使用此运算符时,编译器抱怨 operator>= 的使用不明确,替代方法是:

  • 矿。
  • 内置的operator>=(long double, int).

现在,我如何强制程序使用我的运算符?

0 投票
2 回答
1442 浏览

c++ - 编译器未创建模板化 ostream << 运算符

我有一个类,在头部定义为:

在一个实现文件中,我有:

这一切看起来都很犹太。但是,当我尝试使用此运算符(即 std::cout << MyClass())时,我收到以下链接器错误:

我很惊讶编译器没有自动为我生成这个......关于我做错了什么的任何建议?

0 投票
5 回答
81166 浏览

c++ - 重载新/删除

我在我的程序中做了一个小内存泄漏查找器,但是我重载 new 和 delete(以及 new[] 和 delete[])的方式似乎没有做任何事情。

我重载的方式new如上面的代码片段所示。我想这是运营商返回 void* 的问题,但我不知道该怎么做。

0 投票
3 回答
378 浏览

c# - 如何编写 C# 类来针对 0 和 null 进行测试

背景:我有一个用 C# (2005) 编写的自定义类,代码类似于以下内容:

使用Savepoint sp声明变量后;我可以测试看看是否已经用类似于以下的代码实例化:

问题:是否可以以某种方式重载类运算符,以便我也可以使用以下语法:if (sp) {...}if (sp != 0) {...}

PS:除了习惯的力量之外,我没有真正的理由想要写 if (sp)。