运算符重载

✍ dations ◷ 2025-11-16 07:16:23 #多态,计算机编程

在计算机程序设计中,运算符重载(英语:operator overloading)是多态的一种。这里,运算符(比如+===)被当作多态函数,它们的行为随着其参数类型的不同而不同。运算符并不一定总是符号。

运算符重载通常只是一种语法糖。它可以简单地通过函数调用来模拟:

a + b * c

在一个支持运算符重载的语言里,上面的写法要比下面的写法有效而简练:

add(a, multiply(b, c))

(假设运算符* 的优先级高于运算符 +)

当一种语言允许运算符在某种情况下被隐式调用的时候,运算符重载将不只提供写法上的方便。例如,Ruby中的to_s运算符就是如此,它返回一个对象的字符串表示。

运算符重载由于使程序员能够根据运算符类型的不同来决定运算符功能的不同而有多样用途。C++中<<的使用就是一个例子。表达式

a << 1

a是整型变量时将返回a的两倍,但是当a是一个输出流时将向这个流中写入“1”。因为运算符重载允许程序员改变运算符通常的语义,慎重使用运算符重载通常被认为是一个好习惯。

以下是C++语言示例:

#include <iostream>using namespace std;class point {public:	int x, y;	point() {		x = y = 0;	}	point(int ix, int iy) {		x = ix;		y = iy;	}	point pointxyadd(point pi) {		return point(x + pi.x, y + pi.y);	}	point operator+(point pi) {		return point(x + pi.x, y + pi.y);	}};int main() {	point p1(5, 10), p2(8, 13), p3, p4;	p3 = p1.pointxyadd(p2);	p4 = p1 + p2;	cout << "p3 = (" << p3.x << ',' << p3.y << ')' << endl;	cout << "p4 = (" << p4.x << ',' << p4.y << ')' << endl;	return 0;}

分类

支持运算符重载和定义新运算符的语言:

支持运算符重载的语言:

不支持运算符重载的语言:

相关

  • 凯尔特人凯尔特人(英语:Celt,/kɛlts, sɛlts/),或译为塞尔特人、居尔特人、盖尔特人、克尔特人等。是公元前2000年活动在西欧的一些有着共同的文化和语言 (拉丁文)特质的有亲缘关系的民族
  • 日期在日历中,日期是一个在历法中特定的日子。日期可以帮助我们表示一个指定的日子。我们可以计算出两个日期的距离,例如在公历里,"2020年3月24日"在"2020年3月14日"十日后。一个事
  • 鸟松区鸟松区(台湾话:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif} Tsiá
  • 纵裂甲藻纲原甲藻目(学名:Prorocentrales)为藻类植物中的一目。该植物在植物分类表上,归于双鞭毛虫门(Pyrrophyta)横裂甲藻纲(Dinophyceae)。其特点是其二个鞭毛是在身体顶端,而不像其他同门生
  • 旋风计算机旋风计算机(Whirlwind),一款由麻省理工大学研制的早期电子计算机。引入了当时先进的实时处理理念,并最先采用显示器作为输出设备,与以往机械系统的电子置换不同,拥有世界首款成熟
  • 木谷实木谷实(1909年1月25日-1975年12月19日),杰出的日本围棋手。于1926年,棋正社向日本棋院挑战的“院社对抗战”中一口气连胜十场,一战成名,被称为“怪童丸”。曾和吴清源一起创造了新
  • 2020年1月逝世人物列表2020年1月逝世人物列表,是用于汇总2020年1月期间逝世人物的列表。
  • 2014年国际足联世界杯外围赛 (欧洲区)2014年国际足联世界杯外围赛 (欧洲区)是决定欧洲球队参加2014年国际足联世界杯资格的赛事。本赛事于2012年欧洲国家杯结束后展开。53 队将分成 9 组,分组第一直接晋级世界杯;8
  • 马克·弗郎索瓦马克·弗郎索瓦(Mark Francois,1965年8月24日-)是一位英格兰政治人物,他的党籍是保守党。自2010年开始,他担任瑞利和威克福德选区选出的英国下议院议员。在踏入政坛之前他曾在莱斯
  • 佐佐木未来佐佐木未来(1991年3月30日-),出生于日本岩手县盛冈市,日本女性声优,隶属于响,身高160cm,血型AB型。※粗体字为主要角色2010年2011年2012年2013年2014年2015年2016年2017年2018年2019