dlang语言最新dmd2103版本以下代码一个类怎么重载运算符实现===注意是三个等号不是两个等号有点类似js给我一个详细完整代码例子
下面是一个完整的示例代码,演示如何在D语言中重载运算符实现三个等号(===)操作符:
class MyClass {
int value;
this(int value) {
this.value = value;
}
bool opEquals(MyClass other) const {
return this is other;
}
}
void main() {
auto obj1 = new MyClass(10);
auto obj2 = new MyClass(10);
if (obj1 === obj2) {
writeln("obj1 and obj2 are the same object!");
} else {
writeln("obj1 and obj2 are different objects!");
}
}
在上面的代码中,我们定义了一个名为MyClass的类,并在其中实现了opEquals运算符,以便使用===操作符比较两个对象是否是同一个对象。
在opEquals方法中,我们使用is关键字来比较两个对象的内存地址是否相同,如果相同则说明两个对象是同一个对象,返回true;否则返回false。
在main函数中,我们创建了两个MyClass对象obj1和obj2,它们都具有相同的值10。然后我们使用===操作符比较它们是否是同一个对象。根据opEquals的实现,此比较将返回true,因为这两个对象位于同一内存地址。
如果我们使用==操作符来比较这两个对象,它将调用默认实现,这将比较它们的值而不是它们的内存地址。因此,obj1 == obj2将返回true,因为它们的值相同,但是opEquals将返回false,因为它们并不是同一个对象
原文地址: https://www.cveoy.top/t/topic/fjd9 著作权归作者所有。请勿转载和采集!