运算符重载

✍ dations ◷ 2025-09-16 09:54:03 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 细菌性疾病病原细菌(英语:Pathogenic bacteria)是指能导致传染病的细菌病原体。本条目主要针对会造成人类传染病的病原细菌。大部分的细菌是无害,甚至是有益的,不过有些细菌是病原体。像结
  • 牙周病学牙周病学是研究探讨牙齿支持组织(包括牙龈Gingiva、牙周韧带Periodontal ligament、齿槽骨Alveolar bone、牙骨质Cementum) 的病理变化及临床症状。
  • .mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.larger{fon
  • 植物呼肠孤病毒属植物呼肠孤病毒属(Phytoreovirus)是呼肠孤病毒科的一属,是目前确定的仅有两种植物病毒的属之一(另一是斐济病毒属),一种名为水稻黑条矮缩的植物病即为此类病毒所引起。其代表种有:
  • 粤东粤东,又称广东东翼,是广东省内的区域经济概念,是广东按照地理位置和经济特点划分的四大经济区域之一(珠三角、粤东、粤西、粤北),行政上包括位于广东省东部沿海地带的潮州、汕头、
  • 满浦满浦市(朝鲜语:만포시/滿浦市 Manpho si */?)是朝鲜民主主义人民共和国慈江道北部的一个城市,满浦线经过,位于鸭绿江以南,与中华人民共和国吉林省集安市相望。1991年人口100,893
  • 死士死士,即不畏死的勇士,这类人通常是特别训练,并用来从事自杀攻击的任务,也有的是用来拼死保护重要的人,不论最后任务成功或失败,鲜少有生还机会。死士由来久远,最早可追溯至周武王伐
  • 极限状态设计法极限状态设计法(英语:Limit state design(LSD)),又称荷载与抵抗力因子设计法(英语:Load and resistance factor design(LRFD)),是一种用于结构工程的设计方法。极限状态是当结构处于超过
  • 纪尾井坂之变纪尾井坂之变是明治维新元勋大久保利通遭到暗杀的事件,发生于1878年(日本明治11年)5月14日,发生地点在东京的纪尾井町清水谷(纪尾井坂(日语:紀尾井坂))。参加暗杀的六人以岛田一郎(日
  • 齿舌栉孔扇贝齿舌栉孔扇贝(学名:,台湾称粗肋海扇蛤),是莺蛤目海扇蛤科锦海扇蛤属的一种。主要分布于印度尼西亚、中国大陆、台湾,常栖息在生活在浅海有珊瑚礁的沙质海底。