operator-overloading

    5热度

    4回答

    在C++中可以定义不是类成员的转换运算符吗?我知道如何为常规运营商(例如+)做到这一点,但不适用于转换运营商。 这里是我的用例:我使用一个C库来处理一个PA_Unichar *,其中库定义PA_Unichar是一个16位int。它实际上是一个用UTF-16编码的字符串。我想将它转换为以UTF-8编码的std::string。我把所有的代码转换和准备工作,而我唯一缺少的语法糖,让我写: PA_Uni

    3热度

    3回答

    我正在为我的数据结构类编写一个哈希表,并且我想为我的实现添加一点语法糖。 template <typename HashedObj, typename Object> Object & Dictionary<HashedObj, Object>::operator[](HashedObj & key) { return items.lookup(key); } ,当我做类似的c

    2热度

    2回答

    我有一个URL类,它重载==,<,>和!=运算符以进行简单的比较。 URL类有一个字符串数据成员和一些函数来处理字符串。使用URL类进行测试时,操作符工作正常。 我也有一个拥有URL数据成员的Page类。我正在尝试重载Page类中的相同运算符。 Page类中的平等是基于它们各自URL的平等,所以我在比较页面时使用URL类布尔运算符。这会产生一些我无法弄清楚的编译器错误。代码URL运营商: bool

    3热度

    1回答

    不能定义运算符重载的类型(?): let (?) (foo : Foo) (name : string) = foo.s + name let hw = foo? world :如果我使用的独立让绑定的运营商定义 type Foo = val s : string new(s) = { s = s } static member (?) (foo : Foo,

    0热度

    3回答

    我非常肯定你们都熟悉Big4的概念,并且我有几件事情可以在构造函数,赋值,析构函数和拷贝构造函数中进行打印。 的限制是这样的: 我不能在 我可以有一个方法叫打印,所以我的任何方法使用一个以上的换行符(如ƒN或std :: ENDL)猜测打印是我将把那个宝贵的一个,只有'\ n'的地方,我的问题是,如何在每个Big4上打印每个要打印的元素的打印方法?任何想法?也许重载Big4?

    2热度

    3回答

    我正在处理两个定义真实和复杂数据类型的包装类。每个类定义了重载的构造函数,以及四个算术运算符+, - ,*,/和五个赋值运算符=,+ =等。为了避免重复代码,我考虑使用左右模板函数 - 手侧操作者的参数是不同的数据类型的: // real.h class Real { public: explicit Real(const double& argument) {...} e

    3热度

    5回答

    ==运算符在C#中的功能如何?如果它用于比较类A的对象,它会尝试匹配所有的A的属性,还是会查找指向同一内存位置(或者别的东西)的指针? 让我们来创建一个假设的例子。我正在编写一个利用Twitter API的应用程序,它有一个Tweet类,它具有单个推文的所有属性:文本,发件人,日期&时间,源等。如果我想比较类资料Tweet的等价性,可我只是用: Tweet a, b; if (a == b)

    3热度

    5回答

    我已经得到这个权利了一些问题,所以我想问问,如果任何人有这是否是实现自定义不可变类Equals方法和平等/不平等运营商的有效途径的任何反馈。这些操作员被我的程序非常频繁地调用,所以我想确保让他们正确。 class MyObj { public static bool operator ==(MyObj a, MyObj b) { if (!object.Refe

    4热度

    3回答

    我只是在看Guidelines for Overloading Equals() on msdn(见下面的代码);其中大部分对我来说都很清楚,但有一条我不明白。 if ((System.Object)p == null) ,或者在第二个覆盖 if ((object)p == null) 为什么不干脆 if (p == null) 什么是反对购买美国演员? public override

    1热度

    1回答

    只是一个快速的语法问题。我正在写地图课(学校)。 如果我定义了以下运算符重载: template<typename Key, typename Val> class Map {... Val* operator[](Key k); 会发生什么事,当一个用户写道: Map<int,int> myMap; map[10] = 3; 做这样的事情,只有将覆盖[空]指针的临时副本键k。是否有可