首页 > TAG信息列表 > operator-overloading

嵌套隐式运算符

我有一个名为Optional<的自定义类. T>.此类重写隐式运算符,如下所示: public static implicit operator Optional<T>(T value) { return new Optional<T>(value); } public static implicit operator T(Optional<T> value) { return value.value; } 好的,到目前为止,可以

我如何重载运算符,以使左侧/右侧的类型无关紧要?

一个简单的例子-我想要一个点类,它在2维中描述一个点.而且我希望能够将两个点相加…以及将两个点相乘(不要问我为什么),或者将一个点乘以标量.现在,我仅将其实现为标量是整数,但分数或浮点数也很简单. class Point: def __init__(self, x=0, y=0): self.x = x

我可以在重载的结构运算符中使用常量参数吗?

我可以在.NET Core 2.0类库中定义以下不可变的结构: public struct S { public readonly int v; public S(int value) => v = value; public static S operator +(in S l, in S r) => new S(l.v + r.v); } 在第二个项目(.NET Core 2.0控制台应用程序)中,

调试时如何进入重载运算符?

以下面的代码为例: public static void Main() { Console.WriteLine(Integer.zero - new Integer(5)); } 我正在尝试调试调用-(减号操作)时发生的情况,但是当我尝试按F11(进入)进行调试时,它只是进入构造函数和toString()中… 如何在

可以获取“运算符”结果的参考吗?

是否可以某种方式获取C#中重载运算符的结果的引用,因此您不必使用“ new”关键字来创建临时结果(此后将返回)? 这是我遇到的一个问题的示例: public class Stats { public float someField; public float someOtherField; public static Stats operator +(Stats a, St

c-跳过/未发生赋值运算符重载

我正在尝试为某些工作创建一个库,并且正在使用运算符重载进行赋值操作. 假设X和Y是具有=重载的类的两个实例,因此: A& A::operator=(A &rhs) { A::assign(*this, rhs); return *this; } 当我这样做时: A z; z = x + y; // x and y are other instances of class A 一切都

c-为自定义流类编写操纵器

我编写了一个自定义的流类,该类输出缩进的文本,并且具有可以更改缩进级别的操纵器.所有缩进工作都是在自定义流缓冲区类中实现的,该类由流类使用.缓冲区正在工作(即,文本在输出中缩进了),但是我无法使操纵器工作.我在很多地方都读到ostream(我的课程扩展了)如何使运算符超载<<像这

c-运算符重载中的类数据封装(私有数据)

下面是代码 编码: #include <iostream> using namespace std; class Rational { int num; // numerator int den; // denominator friend istream& operator>> (istream & , Rational&); friend ostream& operator<< (ostream &

无法在C中定义运算符,这是什么问题?

我正在研究Bjarne Stroustrup的C编程语言,并且只限于其中的一个示例.这是代码,除了空白和注释,我的代码与书中的代码相同(第51页). enum class Traffic_light { green, yellow, red}; int main(int argc, const char * argv[]) { Traffic_light light = Traffic_light::red; /

c-为什么重载的赋值运算符不被继承?

这个问题已经在这里有了答案:            >            Trouble with inheritance of operator= in C++                                    5个 >            operator= and functions that are not inh

C重载运算符==和<之间的区别

谁能解释我重载==和<有什么区别? 例如,如果我使用地图: map<Type, int> a(); friend bool operator<(const Type& lhs, const Type& rhs); friend bool operator==(const Type& lhs, const Type& rhs); 当我调用时,我实现了两个运算符: a.find(value); ==的运算符函数被调用吗

在c中重写operator <<

我正在为我在C的学校做一个项目 我有2节课:Employe和Teacher. 源自Employe的老师,其职能已被覆盖. 我们覆盖运算符<<打印一些雇员或教师的信息.每个类都有一个const int属性LevelAcces_.对于Employe,是5,对于Teacher,是20. 当我在main.cpp中创建教师时,我调用了operator<<教师打印他

cython:将complex [double]添加到double时出错

根据libcpp / complex.pxd,支持将T添加到complex [T]: complex[T] operator+(complex[T]&, T&) complex[T] operator+(T&, complex[T]&) 但这不起作用: a.pyx: # distutils: language = c++ cimport libcpp.complex def f(): libcpp.complex.complex[doubl

c-模板运算符的奇怪行为<<

我无法理解运算符的行为.在我的课上: 标题: #ifndef VECTOR_H_ #define VECTOR_H_ #include <string> #include <iostream> template<class T> class Vector { static const int EXPANDER = 10; T* array; int next; int length;

c-可变参数模板运算符<<

我试图将我的一些函数foo()更改为operator<<(),只是为了使某些“ half C / half C”代码看起来更像C.发生了,但是,我陷入了以下转换步骤: template <class... T> inline const size_t foo(const T&... data) { return sizeof...(T); } struct bar { template <class... T>

c – 没有可行的从std :: function到bool的转换

C 11 std :: function应该实现operator bool() const,那为什么clang告诉我没有可行的转换? #include <functional> #include <cstdio> inline double the_answer() { return 42.0; } int main() { std::function<double()> f; bool yes = (f = the_answer);

c – 三元比较运算符重载

如何实现三元比较运算符以确定例如<的布尔值. b< C?解决方法:解: 在对比较进行编码时,将返回类型作为可以链接其他比较的比较对象,但可以隐式转换为bool.这甚至可以(类型)使用未使用此意图编码的类型,只需手动将它们转换为比较类型即可. 执行: template<class T> class comparison {

c – 错误:未分配被释放的指针

我试图重载赋值运算符来执行多边形对象的深层复制,程序编译,但我得到一个错误,我想要清除.以下是相关代码,如果您认为我需要添加更多,请发表评论.假设正确的#include和<<运算符过载以获得正确的输出等... 错误是:malloc:*对象0x1001c0的错误:未分配被释放的指针 *在malloc_error_brea

c – 重载赋值运算符用下标运算符

我重载了下标运算符和赋值运算符,我试图获得赋值运算符的正确值 例 数组x;X [0] = 5;通过重载下标运算符我可以得到值0,但是当我重载赋值运算符时,它执行赋值但它不使用我的重载函数,因为可变2应该具有值5. class Array { public: int *ptr; int one,two; Array(int

c – 用结构(无类)cout样式重载“<<”

我有一个结构,我想使用’std :: cout’或其他输出流输出. 这可能不使用课程吗? 谢谢 #include <iostream> #include <fstream> template <typename T> struct point{ T x; T y; }; template <typename T> std::ostream& dump(std::ostream &o,point<T> p) const

c – 使用运算符进行隐式转换

这部分是受到this问题的启发.当我写代码时: void test(std::string inp) { std::cout << inp << std::endl; } int main(void) { test("test"); return 0; } “test”从const char *隐式转换为std :: string,我得到了预期的输出.但是,当我尝试这个: std::string operator*(

c运算符重载的多态性

如何使纯虚函数成为operator();功能. 在基类中这样做int operator()= 0;编译器给出错误.在derive类operator()函数中编译器说派生类无法制作.因为下面的课是抽象的我知道我不能创建抽象类的对象,但现在我尝试创建派生类对象. 这是代码 #include <iostream> using namespace std; c

c – 重载逻辑运算符被认为是不好的做法?

重载&&,||是一个坏主意或逗号运算符和为什么?解决方法:我不会超载运算符&&或运算符||.即使你定义了一个产生布尔代数的类(例如有限集),它也可能是一个更好的选择来重载运算符&和运算符|. 原因是C程序员期望运算符&& amp;的特殊语义.和运算符||:它们是短路的,即如果没有必要则不评估它

c – 可以将重载运算符重构为非成员函数中断任何代码吗?

考虑具有重载加法运算符=和的遗留类模板 template<class T> class X { public: X() = default; /* implicict */ X(T v): val(v) {} X<T>& operator+=(X<T> const& rhs) { val += rhs.val; return *this; } X<T> operator+ (X<T>

是否有可能在Java中重载运算符?

参见英文答案 > Operator overloading in Java                                    9个 我有以下类,它描述XY表面上的一个点: class Point{ double x; double y; public Point(int x, int y){ this.x = x; this