operator-overloading相关内容

使用__str__表示法打印容器中的对象

我注意到,当具有重载的__str__方法的实例作为参数传递给print函数时,它会按预期打印。但是,当将包含其中一个实例的容器传递给print时,它会使用__repr__方法。也就是说,print(x)显示x的正确字符串表示,print(x, y)工作正常,但print([x])或print((x, y))打印的是__repr__表示。 首先,为什么会发生这种情况?其次,有没有办法纠正pri ..
发布时间:2022-02-27 15:06:09 Python

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

注意:答案是按特定顺序给出的,但由于许多用户根据投票而不是给出的时间对答案进行排序,这里有一个 答案按最有意义的顺序排列: C++ 中运算符重载的一般语法 C++中运算符重载的三个基本规则 会员与非会员之间的决定 常用运算符重载 赋值运算符 输入和输出运算符 函数调用运算符 比较运算符 算术运算符 数组下标 类指针类型的运算符 转换运算符 重载new和delete ..
发布时间:2022-01-30 15:45:52 C/C++开发

c++ 运算符重载的多态性

如何使纯虚函数成为 operator+();功能.我在基类中这样做整数运算符+()=0;编译器给出错误.在派生类 operator+() 函数中编译器说派生类不能 make .因为下面的类是抽象的我知道我不能创建抽象类的对象,但现在我尝试创建派生类对象. 这里是代码 #include 使用命名空间标准;类安娜{受保护:诠释 x;上市 :虚拟整数运算符+()=0;虚空运算 ..
发布时间:2022-01-24 16:35:56 C/C++开发

常量和非常量运算符重载

我有一个我很困惑的话题,我需要详细说明.它是一个 const 版本和一个非常量版本的运算符重载. //非常量双 &operator[](int idx) {if (idx = 0) {返回数据[idx];}抛出边界错误();} 我知道这个 lambda 函数接受一个索引并检查其有效性,然后返回类中数组数据的索引.还有一个函数具有相同的主体但函数调用为 const d ..
发布时间:2022-01-23 23:19:44 C/C++开发

调用 const 函数而不是其非 const 版本

为了我的目的,我尝试包装类似于 Qt 的共享数据指针的东西,经过测试,我发现应该调用 const 函数时,选择了它的非 const 版本. 我正在使用 C++0x 选项进行编译,这是一个最小的代码: 结构数据{int x() 常量 {返回 1;}};模板结构容器{容器() {ptr = 新 T();}T&操作员*() {puts("非常量数据指针");返回 *ptr;}T * 运算 ..

“+"Java 类的运算符

我有这样的课: 私有静态类 Num {私人int val;公共编号(int val){这个.val = val;}} 是否可以使用“+"-操作符添加到类的对象? Num a = new Num(18);数字 b = 新数字 (26);数字 c = a + b; 解决方案 不,你不能.+ 仅对数字、字符和 String 进行重载,并且不允许定义任何额外的重载. 有一种特殊情况,当您可 ..
发布时间:2022-01-17 09:46:14 Java开发

运算符重载和命名空间

可能重复: 非成员运算符重载应该放在哪里? p> 在浏览 SO 时,我经常发现涉及重载/定义 std::ostream& 的问题或答案.operator 或 Foo operator+(const Foo& l, const Foo& r). 虽然我知道如何以及何时(不)编写这些运算符,但我对 namespace 的事情感到困惑. 如果我有以下课程: 命名空间栏{类Foo {}; ..
发布时间:2022-01-14 23:41:57 C/C++开发

C++ 中的命名空间和运算符重载

在特定命名空间中编写库时,为该命名空间中的类提供重载运算符通常很方便.似乎(至少在 g++ 中)重载的运算符可以在库的命名空间中实现: 命名空间库 {A类{};运算符+(const A&, const A&);}//命名空间库 或全局命名空间 命名空间库 {A类{};}//命名空间库Lib::A 运算符+(const Lib::A&, const Lib::A&); 根据我的测试,它们似乎 ..
发布时间:2022-01-14 23:09:50 C/C++开发

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

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

fortran 运算符重载:函数或子例程

我最近将我的 .f90 代码更新为 .f03,我期待看到加速,因为我的旧版本在 do 循环内的每次迭代中涉及许多分配和解除分配(7 个 3D 数组--45x45x45)(总共 4000).使用派生类型,我在模拟开始时分配这些数组并在结束时释放它们.我以为我会看到加速,但实际上运行速度要慢得多(30 分钟而不是 23 分钟). 我运行了一个分析器,看起来加/减/乘/除运算符需要相对较长的时间. ..