运算符重载

✍ dations ◷ 2025-11-18 19:43:51 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 16号州际公路16号州际公路(Interstate 16,简称I-16),又名吉姆·吉利斯萨凡纳公园古道(Jim Gillis Historic Savannah Parkway),是美国州际公路系统,也是乔治亚州公路系统的一部分,全线位于乔治亚
  • 汆(拼音:cuān;注音:ㄘㄨㄢ)是烹饪时对食材的一种处理方法,又称汆烫、川烫、焯水或飞水。较常用的一个意思是指把食材放入沸水中片刻,透过水的热力烧煮食材。可以达到去除肉类血水
  • 科学仪器测量仪器(英语:Measuring instrument,又称为测量仪表、检测仪表或测量仪器仪表),是用来进行各种测试而取得相关数据的。众多周知,在物理学、工程学、以及品质保证上,都是需要通过测
  • 山迪·柯法斯桑福德·柯法斯(英语:Sanford Koufax,1935年12月30日-),昵称山迪·柯法斯(Sandy Koufax),本名桑福德·布劳恩(Sanford Braun),生于美国纽约市布鲁克林,前职业棒球选手,守备位置为投手,左投
  • 萨马丁尼乔万尼·巴蒂斯塔·萨马丁尼(意大利语:Giovanni Battista Sammartini,1700或1701年-1775年1月15日),法国血统的意大利作曲家。早年从父学习音乐,1720年在宫廷乐队任双簧管手,1728年
  • 东罗马帝国皇帝本表列出东罗马帝国的皇帝。东罗马帝国的开始时间难于确定。罗马皇帝戴克里先为了便于管理,在284年将罗马帝国分为东西两部。不过,拜占庭本身由始至终将自己视为罗马帝国的合
  • 解释器解释器(英语:interpreter),是一种程序,能够把编程语言一行一行解释运行。解释器像是一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓
  • 阿立未来阿立未来(日语:あだち みく,1980年2月28日-),日本的AV女优。出道于日本神奈川县。亦使用栗山未来、みく、安藤遥、未来、森野はる、絵里、大友雪絵等艺名进行拍片。
  • 亚历山大·斯科特·布利特亚历山大·斯科特·布利特(Alexander Scott Bullitt,1761年-1816年4月13日),是一名美国拓荒者和肯塔基州的早期政治家。亚历山大全家是法国胡格诺派教徒难民,1685年迁居北美。最初
  • 蜜饯蜜饯(英语:Candied fruit),也称果脯,闽南语称之为咸酸甜(kiâm-sng-tiⁿ),是以桃、杏、梨、枣、冬瓜、生姜或果仁等为原料,用糖或蜂蜜腌渍后而加工制成的食品。传说果脯是明朝时期的