运算符重载

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

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

分类

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

支持运算符重载的语言:

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

相关

  • 孟加拉孟加拉人民共和国(孟加拉语:গণপ্রজাতন্ত্রী বাংলাদেশ,Gônôprôjatôntri Bangladesh),通称孟加拉国(বাংলাদেশ .mw-parser-output .IPA{font-fami
  • 微系统微技术(英语:Micro-technology)包含了微机电感测和控制、驱动元件制程开发技术、微机电系统整合技术、射频(RF MEMS)、光学(Optical MEMS)、生物医学(Bio MEMS)、电脑与周边(Compute
  • 碱土金属固体、 液体、 气体碱土金属是指在元素周期表中同属第2族(旧称ⅡA族)的六个金属元素:铍(Be)、镁(Mg)、钙(Ca)、锶(Sr)、钡(Ba)、镭(Ra),其中镭具有放射性。碱土金属都是银白色的、比较软的金
  • 2016 HOsub3/sub2016 HO3,或写为2016 HO3,是一颗发现于2016年4月27日的小行星,被认为是至今发现轨道最稳定的地球的准卫星。当2016 HO3环绕太阳时,它看起来也同时环绕地球运转。虽然它和地球距
  • 奥地利地理奥地利是位于中欧的一个多山小国。奥地利国土面积83,869km²,大约相当于两个瑞士的大小。奥地利是一个内陆国,与瑞士、列支敦士登、德国、捷克、斯洛伐克、匈牙利、斯洛文尼亚
  • span class=nowrapYb(NOsub3/sub)sub3/sub/span硝酸镱是一种无机化合物,化学式为Yb(NO3)3。硝酸镱可以将氧化镱、氢氧化镱或碳酸镱溶于硝酸得到:所得溶液经过小心蒸发可以得到水合硝酸镱,其中六水合物最常见。水合硝酸镱受热
  • 白芷白芷(学名:Angelica dahurica),又名虈(汉语拼音:xiāo)、
  • 帕尔杜比采州- Chrudim District- Pardubice District- Svitavy District- Ústí nad Orlicí District帕尔杜比采州(捷克语:Pardubický kraj),是捷克的一个州,历史上属于波希米亚的东
  • ANGELIC LAYER 天使领域《天使领域》(ANGELIC LAYER)是日本漫画家团体CLAMP创作的日本漫画作品。于《月刊少年Ace》(角川书店)1999年2月号至2001年11月号进行连载。单行本全5卷。2001年改编成电视动画
  • 先进格式化先进格式化(英语:Advanced Format),又称高级格式化、高階格式化或进階格式化,是IDEMA(International Disk Drive Equipment and Materials Association)于2009年12月制定的硬盘格式