运算符重载

✍ dations ◷ 2025-11-29 15:57:16 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 童谣儿歌,又称童谣,是一种以儿童为主要对象的歌曲,曲色旋律多半较为简单,歌词亦简单琅琅上口,使儿童容易记忆(但未必各年龄层都能充分理解)。这类的歌曲可能是民谣(如丢丢铜仔)、模拟儿童
  • 珀斯郡珀斯郡(英语:Perthshire,苏格兰盖尔语:Siorrachd Pheairt)是苏格兰历史上的郡之一,位于苏格兰中部。在1890年至1930年期间,珀斯郡是实际存在的行政区划。珀斯郡有“大郡”(big count
  • 稷山之战釜山镇 – 多大浦 – 东莱城 – 尚州 – 忠州弹琴台 – 玉浦 – 泗川 – 临津江 – 唐浦 – 唐项浦 – 闲山岛 – 龙仁 – 梨峙 – 平壤 – 釜山浦 – 北关
  • 狭叶栎狭叶栎(学名:Quercus stenophylloides),又名狭叶椆、狭叶高山栎、台湾窄叶青冈,台湾特有种,为壳斗科栎属,常绿阔叶树。本种与白背栎(Quercus salicina)型态十分相近,对于两物种是否应
  • 胜利广场 (巴黎)胜利广场(Place des Victoires)是巴黎的一个圆形广场,位于巴黎皇家宫殿东北方不远处,第一区和第二区交界处。在广场中心,是国王路易十四的宏伟的骑马雕像,以庆祝1678-79年签订《奈
  • 极微之歌《A小调之歌》(英语:)是由美国歌手艾莉西亚·凯斯于2001年6月5日在J唱片公司发行的首张个人专辑,高中毕业之后,凯斯与哥伦比亚唱片公司签约,开始她的音乐事业。并于1998年,在地下推
  • 甘豆族甘豆族(学名:Detarieae)又名荚髓苏木族,是豆目豆科的一族,包含21个属。本族属于甘豆亚科,是火麒麟族和醉鹦族的旁系群。本族过去是苏木亚科的一部分,但由于并系群问题,本族在2017年
  • 杨林 (虚构隋朝人物)杨林,是《说唐》、《兴唐传》中的虚构人物。北周大臣杨忠之弟,隋文帝杨坚叔父。杨坚即位后,封其为靠山王。隋唐时期第八条好汉。北周武帝宇文邕兴兵灭北齐,护卫大将军杨忠为元帅
  • 刘静庵刘静庵(1875年-1911年6月12日),原名贞一,又名大雄,字敬安、静庵,以字行,中国湖北潜江人,清朝末年反清革命人士,基督徒,教名保罗。刘静庵自幼随父亲学习旧学,并涉猎新学。 1903年,入湖北护
  • 约恩内·耶尔韦莱约恩内·耶尔韦莱(芬兰语:Jonne Järvelä,1974年6月3日-)是芬兰乐团Korpiklaani的主唱兼吉他手。他以其yoik(英语:Joik)式的维尔加民谣金属和为Finntroll专辑《Jaktens Tid(英语:Jakt