运算符重载

✍ dations ◷ 2025-11-13 07:07:50 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 南北战争(4年3周6日) (最后一枚炮弹于1865年6月22日发射)联邦胜利亚伯拉罕·林肯埃德温·M·斯坦顿尤利西斯·S·格兰特 威廉·T·舍曼 大卫·法拉格特 乔治·B·麦克莱伦 亨利·韦
  • 广南省广南省(越南语:Tỉnh Quảng Nam/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","
  • 神经科学与现象学神经现象学(Neurophenomenology ),是一种以实用的方式解决意识难题的科学研究思路。它将神经科学与现象学结合起来,在强调人类心灵的具身状态的基础上对经验、心灵和意识进行研
  • 菌媒介异营菌异养(英语:Myco-heterotrophy)是植物与真菌的一种共生关系,此关系中植物不行光合作用,而是与真菌形成菌根后,透过寄生真菌取得全部或部分的有机养分。菌异养被认为是一种欺诈行
  • 奈姆蒂姆萨夫一世奈姆蒂姆萨夫一世(Merenre Nemtyemsaf I)(或译为麦伦拉一世、莫润尔一世)是埃及第六王朝第四位法老,在位超过10年。早期学者相信他即位前曾与其父佩皮一世共同执政短时间。1995年
  • 四邑片四邑方言或称冈州方言,即粤语支四邑片或称冈州片,主要分布于广东省江门市蓬江区、江海区、新会区、台山市、开平市、恩平市、鹤山市、珠海市斗门区、金湾区、中山市古镇镇以及
  • 路易丝·赖纳路易丝·赖纳(英语:Luise Rainer,1910年1月12日-2014年12月29日)是出生在德国的美国电影演员,也是犹太人。1936年和1937年主演《歌舞大王齐格菲》《大地》连续荣获第9届、第10届奥
  • 菲利普·路德维希·施塔蒂乌斯·米勒菲利普·路德维希·施塔蒂乌斯·米勒(德语:Philipp Ludwig Statius Müller,1725年4月25日-1776年1月5日),德国动物学家。米勒曾在埃朗根-纽伦堡大学教授自然科学。
  • 亚洲达人秀亚洲达人秀 (英语:Asia's Got Talents)是播出达人秀专营权的区域版本在频道AXN。胜利者可在达人秀获得总值奖金100,000美元。 亚洲达人秀开始于2015年3月12日,参赛者包括20个
  • 土地神屋土地神屋(泰语:ศาลพระภูมิ)指东南亚地区供奉土地保护神(英语:Genius loci)的地方,在泰国、老挝及柬埔寨都可以看到,相当于华人社区的土地庙。用木头或石灰制成小家或庙的