运算符重载

✍ dations ◷ 2025-11-06 07:05:24 #多态,计算机编程

在计算机程序设计中,运算符重载(英语: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;}

分类

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

支持运算符重载的语言:

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

相关

  • 乳酸乳酸(IUPAC学名:2-羟基丙酸)是一种化合物,它在多种生物化学过程中起作用。它是一种羧酸,分子式是C3H6O3。它是一个含有羟基的羧酸,因此是一个α-羟酸(AHA)。在水溶液中它的羧基释放
  • Sc3d1 4s22,8,9,2蒸气压第一:633.1 kJ·mol−1 第二:1235.0 kJ·mol−1 第三:2388.6 kJ·mol−1 (主条目:钪的同位素钪(Scandium),其命名Scandium源自斯堪的纳维亚半岛的拉丁文名称Sc
  • 至今全新世(Holocene)(旧称冲积世(Alluvium,该词汇现指冲积层),日语称完新世)是最年轻的地质年代,从11700年前开始。根据传统的地质学观点,全新世一直持续至今,但也有人提出工业革命后应该
  • 清帝退位《宣统帝退位诏书》是由清朝最后一位君主、同时也是中国自秦始皇创立皇帝制度以来的最后一位被承认的皇帝宣统帝溥仪于1912年2月12日(宣统三年十二月廿五)所颁布的退位诏书,标
  • 侯爵侯是中国古代爵位名,一些邻近国家受中国影响也以此为爵位名。欧洲中世纪以后,在中文里也用“侯爵”来翻译欧洲贵族爵位中相应等级的称号(例如法国Marquis、英国Marquess、德国M
  • 印度超级板球联赛印度超级板球联赛(Indian Premier League, IPL),简称印超,是由印度板球总会(Board of Control for Cricket in India)创立,采行2020制的板球比赛。本联赛自2008年开打至今,球季时间
  • 俄国二月革命俄国二月革命(俄语:Февральская революция)是在1917年3月8日(儒略历2月23日)于俄罗斯发生的民主革命,是俄国革命的序幕。为区别于第一次俄国革命,也称第二次俄
  • 魔幻现实主义魔幻现实主义(英语:Magic Realism或Magical Realism)是一种叙事文学技巧,故事中的因果关系看起来常常不合乎现实状况。魔幻现实主义这个词的第一次使用是德国艺术评论家弗朗茨·
  • 硝酸铈(III)硝酸铈(III)(cerium(III) nitrate)是一种无机化合物,以六水合物Ce(NO3)3·6H2O最为常见。无色至浅红色潮解结晶。相对密度4.37。熔点96°C。易溶于水,水溶液呈微酸性中性。溶于
  • 莲纳·荷恩莲纳·玛丽·卡尔霍恩·荷恩(英语:Lena Mary Calhoun Horne,1917年6月30日-2010年5月9日),美国歌手、女演员和舞蹈员。16岁加入著名的“棉花俱乐部”(Cotton Club)担任舞蹈演员,在