运算符重载

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

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

分类

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

支持运算符重载的语言:

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

相关

  • 白髓白髓,亦作白脾髓,是脾脏的一部分,与红脾髓一起构成脾脏的主要部分。白脾髓由马耳皮基氏脾小结及马耳皮基氏小体等腺体组织构成,外貌呈球型,包裹着小动脉。它的主要功能则为对抗外
  • 尚-佛罕索瓦·商博良让-弗朗索瓦·商博良(法语:Jean-François Champollion,1790年12月23日—1832年3月4日),又译尚波里庸、尚皮隆,是法国著名历史学家、语言学家、埃及学家,是第一位识破古埃及象形文
  • 黑帮暴徒《黑帮暴徒》(Tsotsi)是一部2005年南非电影,加文·胡德执导。该片根据Athol Fugard的小说《Tsotsi》改编。电影配乐中有受欢迎的南非艺术家Zola演奏的Kwaito音乐,以及Mark Kilia
  • 威廉·凯林威廉·乔治·凯林(英语:William George Kaelin,1957年11月23日-),生于纽约,美国癌症学家、哈佛医学院教授。2019年诺贝尔生理学或医学奖得主。凯林1979年获杜克大学化学学士学位,198
  • 五大湖区城市群五大湖区城市群(英语:Great Lakes Megalopolis)是由一群位于北美洲,围绕大湖区的城市群。这些城市主要位于美国中西部和加拿大南安大略,以及宾夕法尼亚州、纽约州和魁北克。这个
  • 多米尼克·斯特劳斯-卡恩多米尼克·斯特劳斯-卡恩(法语:Dominique Strauss-Kahn,1949年4月25日-),法国经济学家、律师、政治家,法国社会民主主义政党社会党党员。Lycée Carnot高中毕业,1971年巴黎高等商业
  • 万州话万州话(四川话拼音:Wan4zou1hua4;本地发音:),或称万县话,是中国重庆万州区城区内的万州本地人所使用的语言,属于汉语西南官话成渝片。广义上万州话也可以指原万县市所辖各区县所有本
  • 加利福尼亚州8号提案 (2008年)8号提案(英文:Proposition 8,简写为Prop 8)是美国加利福尼亚州2008年11月的一项州宪法修正投票提案。该提案致力于将加利福尼亚州内婚姻关系的定义仅限定于异性之间,从而否定同性
  • 伊尼亚齐奥·马里诺伊尼亚齐奥·马里诺(Ignazio Marino,1955年3月10日-)是一名意大利医生、政治人物,前罗马市长,隶属中间偏左的民主党。毕业于圣心天主教大学医学院,并且曾经先后在剑桥大学和匹兹堡
  • 野利仁荣野利仁荣(?-1042年),为西夏开国重臣,是西夏景宗李元昊皇后野利氏的疏族。相传为西夏文创始人,于大庆元年(1036年)秉承景宗旨意创造蕃书(西夏文),成十二卷,行体方整,但笔划繁冗。(《宋史》卷