运算符重载

✍ dations ◷ 2025-11-28 00:16:46 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 刮胡刀刮胡刀,亦称为剃须刀,是用来刮胡须的刀,最早在1800年出现,但是由于使用上容易伤人,需要抹上刮胡泡软化胡渣以便刮除。金·坎普·吉列改良刮胡刀,使刮胡刀在使用上更安全,并于1903年
  • 美国商会美国商会(United States Chamber of Commerce,简称:USCC)是一个代表多间企业和贸易协会的美国游说团体,并不是美国政府的官方单位。美国商会由多位政策专家、游说家和律师组成。
  • 蓄意轰炸格尔尼卡格尔尼卡大轰炸,指西班牙内战期间,弗朗西斯科·佛朗哥国民军对西班牙巴斯克地区格尔尼卡进行的空中轰炸。在佛朗哥命令下,纳粹德国空军秃鹰军团和意大利王国空军军团(意大利语:Av
  • 奚美娟奚美娟(1955年4月20日-),上海川沙人,中国大陆女演员,现为上海话剧艺术中心一级演员。毕业于上海戏剧学院表演系。1955年奚美娟出生于上海川沙,1973年考入上海戏剧学院表演系,毕业后
  • 美国陆军系列《美国陆军系列》(英语:America's Army)是一系列多人军事战术的第一人称射击游戏,由美国陆军红石兵工厂(英语:Redstone Arsenal)陆军游戏工作室研发,美国联邦政府为了协助美国陆军招
  • Middle AmericaMiddle America,常译作“(美国的)心脏地带”“(美国的)小镇价值”“半个美国”“美国中产阶级”“中间美国”“中美”“中部美国”,是美式英语中的一句俗语,用于描述地理上的美国大
  • 坐标时相对论中,利用时空坐标系表达计算结果很方便。这里的时空坐标系隐含了“假想每个时空点都有观察者”的意义。在许多(但不是全部)坐标系中,发生于某一瞬间、某一地点的事件可由一
  • 烟肉食品列表“烟肉”(bacon)演变自古高地德语中的“bacho”(意为臀部、火腿或熏腹部肉),亦近于古法语中的“bacon”。烟肉由猪的腹部肉(俗称五花肉)或背部肉制成,依切法不同而具有不等的脂肪含
  • 奥利·普罗塔索夫奥利·普罗塔索夫(1964年2月4日-),前乌克兰职业足球员,苏联・乌克兰国家足球队成员。从1984年到1994年,他共为苏联・乌克兰国家足球队出场69次,打进29球。
  • 苏-57战斗机苏-57战斗机(俄文:Сухой Су-57)是一款具隐形能力的多功能战斗机,属第五代战斗机,采单座双引擎设计。由俄罗斯联邦联合航空制造公司旗下苏霍伊航空集团主导,在“未来战术空