operator-overloading相关内容

重载运算符<<对于模板类

我正在尝试为返回流的二叉树实现一种方法.我想使用方法中返回的流在屏幕中显示树或将树保存在文件中: 这两个方法都在二叉树的类中: 声明: void streamIND(ostream&,const BinaryTree*);朋友ostream&运算符&);模板ostream&运算符void streamIND(ostream& os,Node *nb) {如果(!nb)返回;if (n ..
发布时间:2021-12-13 19:03:57 C/C++开发

C++ 模板友元运算符重载

我的代码有什么问题? template浮动类{朋友 Float运算符+ (const Float &lhs, const Float &rhs);}; G++ 只是不断警告: float.h:7: 警告:友元声明‘Floatoperator+(const Float&, const Float&)' 声明了一个非模板函数 float.h:7: 警告:(如果这不是您想要的,请确保已经 ..
发布时间:2021-12-13 18:55:20 C/C++开发

类模板上的运算符重载

我在为模板类定义一些运算符重载时遇到了一些问题.让我们以这个假设的类为例. template 类我的类{//...}; 运算符+= //在 MyClass.h 中MyClass&运算符+=(const MyClass& classObj);//在 MyClass.cpp 中模板MyClass&MyClass::operator+=(const MyClass& classO ..
发布时间:2021-12-13 18:53:29 C/C++开发

Golang 运算符重载

我知道 golang 不提供运算符重载,因为它认为它会增加复杂性. 所以我想直接为结构实现它. 包主导入“fmt"输入一个结构体{值 1 整数值 2 整数}func (a A) AddValue(v A) A {a.value1 += v.value1a.value2 += v.value2返回一个}功能主(){x, z := A{1, 2}, A{1, 2}y := A{3, 4}x = ..
发布时间:2021-12-11 23:01:46 其他开发

Kotlin 中的平等

我正在学习 Kotlin,具有 C++ 和 Java 背景.我期待以下打印 true,而不是 false.我知道 == 映射到 equals.equals 的默认实现是否不比较每个成员,即 firstName 和 lastName?如果是这样,它会不会将字符串值视为相等(因为 == 再次映射到 equal)?显然,我在 Kotlin 中还没有正确理解平等与身份的关系. class MyPerso ..
发布时间:2021-12-10 17:33:15 Java开发

“operator = must be a non-static member"是什么意思?意思?

我正在创建一个双链表,并重载了 operator= 以使列表中的另一个相等: templatevoid operator=(const list& lst){清除();复制(lst);返回;} 但是当我尝试编译时出现此错误: container_def.h(74):错误 C2801:'operator =' 必须是非静态成员 另外,如果有帮助,第 74 行是定义的最后一行,带有“}" ..
发布时间:2021-12-09 21:25:31 C/C++开发

什么时候重载逗号运算符?

我经常看到关于在 C++ 中重载逗号运算符的问题(主要与重载本身无关,但与序列点的概念有关),这让我感到疑惑: 什么时候应该重载逗号?它的实际用途有哪些例子? 我只是想不出任何我见过或需要的例子 foo, bar; 在现实世界的代码中,所以我很好奇何时(如果有的话)实际使用它. 解决方案 让我们稍微改变一下重点: 什么时候你应该重载逗号? 答案:从不. 例 ..
发布时间:2021-12-07 23:10:11 C/C++开发

一个正 lambda:'+[]{}' - 这是什么魔法?

在堆栈溢出问题重新定义 C++11 中不允许的 lambda,为什么?,一个给出了无法编译的小程序: int main() {自动测试 = []{};测试 = []{};} 问题得到了回答,一切看起来都很好.然后是 Johannes Schaub 并制作了 一个有趣的观察: 如果你在第一个 lambda 之前放一个 +,它会神奇地开始工作. 所以我很好奇:为什么下面的方法有效? ..
发布时间:2021-12-01 15:32:34 C/C++开发

运算符[][] 重载

是否可以重载 [] 运算符两次?为了允许,像这样:function[3][3](就像在二维数组中). 如果可能的话,我想看看一些示例代码. 解决方案 你可以重载 operator[] 来返回一个你可以再次使用 operator[] 的对象得到结果. class ArrayOfArrays {民众:ArrayOfArrays() {_arrayofarrays = new int*[ ..
发布时间:2021-12-01 15:30:17 C/C++开发

运算符重载:成员函数与非成员函数?

我读到声明为成员函数的重载运算符是非对称,因为它只能有一个参数,而另一个自动传递的参数是 this 指针.所以不存在比较它们的标准.另一方面,声明为 friend 的重载运算符是对称,因为我们传递了两个相同类型的参数,因此它们可以进行比较. 我的问题是,当我仍然可以将指针的左值与引用进行比较时,为什么首选朋友?(使用非对称版本的结果与对称版本相同)为什么 STL 算法只使用对称版本? ..

如何正确重载 <<ostream 的运算符?

我正在用 C++ 编写一个用于矩阵运算的小型矩阵库.但是我的编译器抱怨,之前没有.这段代码被搁置了 6 个月,在此期间我将我的计算机从 debian etch 升级到 lenny (g++ (Debian 4.3.2-1.1) 4.3.2) 但是我在使用相同 g++ 的 Ubuntu 系统上遇到了同样的问题. 这是我的矩阵类的相关部分: 命名空间数学{类矩阵{民众:[...]朋友 std: ..
发布时间:2021-12-01 15:29:10 C/C++开发

运算符重载的基本规则和习惯用法是什么?

注意:答案以特定顺序给出,但由于许多用户根据投票而不是给出时间对答案进行排序,这里是索引按照最有意义的顺序回答: C++ 中运算符重载的一般语法 C++ 中运算符重载的三个基本规则 会员与非会员之间的决定 重载的常用运算符 赋值运算符 输入和输出运算符 函数调用运算符 比较运算符 算术运算符 数组下标 类指针类型的运算符 转换运算符 重载新建和删除 (注意: ..
发布时间:2021-12-01 14:36:22 C/C++开发

我应该为赋值运算符使用左值引用限定符吗?

最近,我关注了有关 C++ 中表达式赋值的讨论,如下例所示: 字符串s1、s2、s3;(s1 + s2) = s3; 使用 C++11 可以将赋值运算符限制为左值引用(在左侧).如下声明赋值运算符时,由于类型不兼容,编译器 Clang 会拒绝代码并显示错误消息. auto operator=(const string& rhs) &->字符串&;自动操作符=(string&& rhs) &- ..
发布时间:2021-11-30 12:34:57 C/C++开发