operator-overloading相关内容

为什么要覆盖 operator()?

在 Boost Signals 库中,他们正在重载 () 运算符. 这是 C++ 中的约定吗?用于回调等? 我在一位同事(他恰好是 Boost 的忠实粉丝)的代码中看到了这一点.在所有 Boost 优点中,这只会让我感到困惑. 对此超载的原因有任何见解吗? 解决方案 重载 operator() 的主要目标之一是创建一个函子.函子的行为就像函数一样,但它的优点是它是有状态的 ..

我怎么能合理地重载放置运算符 new?

C++ 允许重载 operator new - 全局和每个类 - 通常 operator new、operator new[] 与 一起使用new[] 语句和放置 operator new 分开. 这三个中的前两个通常会因使用自定义分配器和添加跟踪而过载.但是放置 operator new 看起来很简单——它实际上什么都不做.例如,在 Visual C++ 中,默认实现只返回传递给调用的地址 ..
发布时间:2021-12-22 18:39:56 C/C++开发

以允许响应更新的方式重载 C++ 索引下标运算符 []

考虑编写一个可索引类的任务,该类自动将其状态与某些外部数据存储(例如文件)同步.为了做到这一点,类需要知道可能发生的对索引值的更改.不幸的是,重载 operator[] 的常用方法不允许这样做,例如... 类型&运算符[](整数索引){断言(索引> = 0 &&索引 有什么方法可以区分正在访问的值和正在修改的值吗? 类型 a = myIndexable[2];//使用权myIndexable ..
发布时间:2021-12-21 23:42:58 C/C++开发

重载向量<T>的输出流操作符

重载输出流运算符的推荐方法是什么?以下可以不能完成.如果操作符 模板 内联 std::ostream&运算符 再次,似乎不言自明,但是一些 nuser 出现并执行此操作 class IdiotClass{静态 int 鲍勃;}; 现在 foo();//哎呀, 您现在拥有的是一个表达式(乘法),因为 IdiotClass::bob 解析为非类型! 对于人类来说,这很明显 ..
发布时间:2021-12-21 13:51:49 C/C++开发

我如何定义双括号/双迭代器运算符,类似于向量的向量?

我正在移植使用大量浮点数的代码,这可能会触发从 c 到 c++ 的 malloc 失败.我问了一个关于我应该使用向量还是双端队列的问题,Niki Yoshiuchi 慷慨地向我提供了这个安全包装的例子类型: template类 VectorDeque{私人的:枚举类型 { 无,DEQUE,向量};std::dequem_d;std::vectorm_v;类型 m_type;...上市:无效调整大 ..
发布时间:2021-12-21 13:50:55 C/C++开发

为什么不对 std::vector 重载 operator+=() ?

我已经开始学习 C++,所以我不知道在我缺乏知识/经验的情况下,为什么我要描述的对新手来说看起来如此简单的东西在 STL 中还没有.要将向量添加到另一个向量,您必须输入: v1.insert(v1.end(), v2.begin(), v2.end()); 我想知道在现实世界中人们是否只是重载了 += 运算符以使其不那么冗长,例如 template void operator+=(std:: ..
发布时间:2021-12-21 13:46:44 C/C++开发

我可以在 Javascript 中定义自定义运算符重载吗?

是否可以在 JavaScript 中的类型实例之间定义自定义运算符? 例如,假设我有一个自定义向量类,是否可以使用 vect1 == vect2 检查相等性,而底层代码是这样的? operator ==(a, b) {返回 a.x == b.x &&a.y == b.y &&a.z == b.z;} (当然这是废话.) 解决方案 我同意向量原型上的相等函数是最好的解决方案.请 ..
发布时间:2021-12-21 13:37:36 前端开发

我如何称呼原始的“运营商新"?如果我超载了吗?

假设我需要重载全局 ::operator new() 用于为每个分配的对象存储额外的数据.所以基本上它会这样工作: 对于每次调用全局 ::operator new() 它将获取传递的对象大小并添加额外数据的大小 它将分配一个内存块,其大小在上一步推导出 它会将指针偏移到没有被额外数据占用的块部分,并将该偏移值返回给调用者 ::operator delete() 将反向执行相同的操作 ..
发布时间:2021-12-21 10:03:11 C/C++开发

operator= 和 C++ 中未继承的函数?

在我刚刚进行的测试之前,我认为只有构造函数在 C++ 中没有被继承.但显然,赋值 operator= 不是太...... 这是什么原因? 是否有任何解决方法可以继承赋值运算符? operator+=, operator-=, ... 也是这种情况吗? 是否继承了所有其他函数(除了构造函数/operator=)? 事实上,我在做一些CRTP时遇到了这个问题: template班级 ..
发布时间:2021-12-17 19:22:35 C/C++开发

C# 泛型运算符

我正在尝试实现一个像这样的通用运算符: class Foo{公共静态T运算符+(T a, T b){//用 a 和 b 做一些对运算符 + 有意义的事情}} 我真正想做的是优雅地处理继承.使用 Foo 中的标准运算符 +,其中 T 代替“Foo",如果有人从 Foo 派生(例如 Bar 继承 Foo),那么 Bar + Bar 操作仍将返回 Foo.我希望使用通用运算符 + 来解决这个问题,但 ..
发布时间:2021-12-15 10:00:43 C#/.NET

.NET泛型中重载运算符约束的解决方案

如果我想要一个泛型方法只接受重载运算符的类型,例如减法运算符,我该怎么办.我尝试使用接口作为约束,但接口不能有运算符重载. 实现这一目标的最佳方法是什么? 解决方案 没有立即答复;操作符是静态的,不能用约束来表达 - 现有的原语没有实现任何特定的接口(与 IComparable[] 相反,它可用于模拟大于/小于). 然而;如果你只是想让它工作,那么在 .NET 3.5 中 ..
发布时间:2021-12-15 09:27:11 C#/.NET

为什么会出现这种歧义?

考虑我有以下最少的代码: #include 模板结构体数据{typedef typename boost::remove_extent::type value_type;ptr_t 数据;value_type &运算符 [] ( size_t id ) { 返回数据 [id];}运算符 ptr_t &() { 返回数据;}};int main( int argc, char ** argv ){ ..
发布时间:2021-12-13 19:11:10 C/C++开发