运算符重载

✍ dations ◷ 2025-11-21 06:58:39 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 唾腺唾腺(英语:salivary gland;亦称唾液腺、涎腺)是脊椎动物的消化腺之一,位于口腔周围,人类的三大唾腺为腮腺(英语:parotid gland)(parotid gland)、颌下腺(英语:submandibular gland)(submand
  • 柯本气候分类法柯本气候分类法(德语:Effektive Klimaklassifikation,意为“有效气候分类法”),最被广泛被使用的气候分类法,由德国气候学家弗拉迪米尔·彼得·柯本所发展出来的气候分类法,1918年
  • 肉桂Cinnamomum aromaticum Nees肉桂(学名:Cinnamomum cassia,英语:Chinese Cinnamon),又称作官桂、桂心、简桂、玉桂、牡桂,为樟科常绿乔木,台湾分布于海拔0~1800米,而海拔500~1000米尤
  • 法兰克福机场法兰克福机场(德语:Flughafen Frankfurt am Main或者Rhein-Main-Flughafen;IATA代码:FRA;ICAO代码:EDDF),一般也称作“莱茵-美因机场”,是位于德国黑森州法兰克福的一座民用机场。位
  • 冲量冲量是作用在物体上的力在时间上的累积。冲量的量纲和单位都与动量一样。(kg· m/s或N·s ) 一个随时间改变的力对一个物体的冲量指这个力的作用对时间的积累效果。即力对时间
  • 优格酸奶(英语:Yogurt,又称老酸奶、优格、乳酪、酸乳、优酪乳)是乳制品的一种,由动物乳汁经乳酸菌发酵而产生。优格一词源自土耳其语的yoğurt(读音:.mw-parser-output .IPA{font-famil
  • 管棆管棆(?年-?年),字据梧,又字青村。江苏省常州府武进县人,清朝政治人物、诗人。生卒年均不详,与邵长蘅有血缘关系,约清康熙年间人。早年为诸生,授江西余干县、贵州普安县等知县。历官云南
  • 阿兰属阿兰属(学名:)又名尔兰属,是天门冬目兰科的一属,分布于南美洲。本属学名“”源自荷兰出版家彼得·凡·德尔(Pieter van der Aa)的姓氏,是学名作者海因里希·古斯塔夫·赖兴巴赫为了
  • 午夜巴塞罗那《午夜巴塞罗那》(英语:Vicky Cristina Barcelona)是一套2008年金球奖得奖电影,由伍迪·艾伦执导。由斯嘉丽·约翰逊、佩内洛佩·克鲁斯等主演,后者更赢得奥斯卡最佳女配角奖。电
  • 胡亚美胡亚美(1923年3月24日-2019年10月3日),女,北京人,中国医学家,专攻小儿健康的血癌(即白血病)治疗研究工作。1941年在燕京大学医预系学习,1942年3月进入北大医学院,1947年7月毕业于北京大