Tag: operator keyword

具有多个参数的C ++ 数组运算符?

我可以在C ++中定义一个具有多个参数的数组运算符吗? 我试过这样的: const T& operator[](const int i, const int j, const int k) const{ return m_cells[k*m_resSqr+j*m_res+i]; } T& operator[](const int i, const int j, const int k){ return m_cells[k*m_resSqr+j*m_res+i]; } 但是我得到这个错误: error C2804 binary operator '[' has too many parameters

在Java中使用==运算符来比较包装器对象

我正在读Kathy Sierra和Bert Bates的SCJP Java 6,这本书让我非常困惑。 在页面245他们声明下面的代码。 Integer i1 = 1000; Integer i2 = 1000; if(i1 != i2) System.out.println("different objects"); //Prints output different objects 然后在下一页他们有以下代码 Integer i3 = 10; Integer i4 = 10; if(i3 == i4) System.out.println("same objects"); //Prints output same objects 我很困惑! 当我自己尝试这个,似乎你不能使用==比较相同的方式,你会使用equals()方法。 即使整数variables设置为相同的值(即10),使用==总是给我“假”。 我对么? 使用==比较相同的Integer对象(具有相同的值)将始终导致“false”

演员可以明确吗?

当涉及到构造函数时,添加关键字explicit防止热心的编译器在不是程序员的第一意图时创build对象。 这样的机制是否也适用于铸造操作员? struct Foo { operator std::string() const; }; 在这里,例如,我希望能够将Foo投射到一个std::string ,但是我不希望这样的投射隐式发生。

覆盖==运算符。 如何比较为空?

可能重复: 如何在没有无限recursion的情况下检查'=='运算符超载的空值? 这可能是一个简单的答案,但它似乎逃避我。 这是一个简单的例子: public class Person { public string SocialSecurityNumber; public string FirstName; public string LastName; } 假设对于这个特定的应用程序来说,如果社会安全号码匹配,并且两个名称都匹配,那么我们指的是同一个“人”是有效的。 public override bool Equals(object Obj) { Person other = (Person)Obj; return (this.SocialSecurityNumber == other.SocialSecurityNumber && this.FirstName == other.FirstName && this.LastName == other.LastName); } 为了保持一致,我们重写==和!=运算符,对于团队中不使用.Equals方法的开发人员。 public static bool operator !=(Person person1, Person person2) { return ! person1.Equals(person2); […]

Python就地运算符函数与标准运算符函数有什么不同?

为什么不是operator.iadd(x, y)等于z = x; z += y z = x; z += y ? operator.iadd(x, y)与operator.add(x, y)什么不同? 从文档 : 许多操作都有一个“就地”版本。 下面的函数比常用的语法提供了对原地操作符的更原始的访问; 例如,语句x + = y等价于x = operator.iadd(x,y)。 另一种说法是z = operator.iadd(x,y)等价于复合语句z = x; z + = y。 相关的问题 ,但我对Python类方法不感兴趣; 只是内置Pythontypes的常规运算符。