Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是运算符重载?运算符重载是C++;并且在Java中不可用_C++ - Fatal编程技术网

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);}