C++ 什么是运算符重载?运算符重载是C++;并且在Java中不可用
请举例说明。谢谢运算符重载是一种功能,该语言允许您为自己的类型定义运算符,以便您可以编写,例如,C++ 什么是运算符重载?运算符重载是C++;并且在Java中不可用,c++,C++,请举例说明。谢谢运算符重载是一种功能,该语言允许您为自己的类型定义运算符,以便您可以编写,例如,o1+o2,其中o1和o2是您自己类型的实例,而不是内置类型 操作符重载不是C++专用的,但它在java中不可用。下面是Python中的一个示例: class Vector3D(): def __init__(self, x, y, z): self.x = x self.y = y self.z = z def __repr__(self): return "
o1+o2
,其中o1
和o2
是您自己类型的实例,而不是内置类型
<>操作符重载不是C++专用的,但它在java中不可用。下面是Python中的一个示例:
class Vector3D():
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __repr__(self):
return "Vector<%f,%f,%f>" % (self.x, self.y, self.z)
def __add__(self, other):
return Vector3D(self.x + other.x,
self.y + other.y,
self.z + other.z)
a = Vector3D( 1, 2, 3)
b = Vector3D(-1,-2,-3)
print a+b # Vector<0.000000,0.000000,0.000000>
class Vector3D():
定义初始(self,x,y,z):
self.x=x
self.y=y
self.z=z
定义报告(自我):
返回“向量”%(self.x、self.y、self.z)
定义添加(自身、其他):
返回向量3D(self.x+other.x,
self.y+other.y,
self.z+other.z)
a=矢量3D(1,2,3)
b=矢量3D(-1,-2,-3)
打印a+b#矢量
看一看-它有一些示例和支持的语言列表it@Maxood-这也是一种非常好的方法,在编写代码时,如果做得太过分,会让代码非常混乱。运算符重载的任何好处都应该与潜在的调试和维护问题进行权衡。@bernace:为什么它会使调试复杂化?重载运算符会像其他函数一样出现在堆栈中,不是吗?当然,可读性/可理解性是另一个问题。你永远不应该让操作符重载来做与传统意义不同的事情(cough@bemace:operator重载有很多用途,比如实现一个大整数,或者处理日期。但是任何可以被滥用的东西都会被滥用…)@sepp-正如你所说,我的意思是wetware调试器而不是软件类型:)@bemace:您仍然可以创建一个普通的方法:myintadd(myinti){返回新的MyInt(this.value-I.value);}