运算符重载

✍ dations ◷ 2025-11-20 05:46:01 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 离子通道离子通道(英语:Ion channel)是一种膜蛋白,它通过允许某种特定类型的离子依靠电化学梯度穿过该通道,来帮助细胞建立和控制质膜间的微弱电压压差(见动作电位)。这些离子通道存在于所
  • 黎语族黎语支是侗台语系的一支。分布在海南岛中部和西部。使用人数80万。有黎语和加茂语两种语言,黎语又分为多个方言。此外,与黎语有强烈亲缘关系的尚有以下方言:
  • 社会流动实证主义 · 反实证主义(英语:Antipositivism) 结构主义 · 冲突理论 中层理论 · 形式理论 批判理论人口 · 团体 · 组织(英语:Organizational theory) · 社会化 社会性
  • 同翅亚目同翅亚目(学名:Homoptera),亦作同翅目,原是半翅目之下两个亚目之一,但由于部分分类学家认为这个亚目是一个并系群,现已不再使用。原属本亚目的分类单元,现时被分派到下列三个亚目:在
  • 巴吞鲁日坐标:30°27′29″N 91°8′25″W / 30.45806°N 91.14028°W / 30.45806; -91.14028thumbnail 人巴吞鲁日(英语:Baton Rouge,法语:Bâton-Rouge,意为“ 红棍”)是美国路易斯安那
  • 明孝宗明孝宗朱祐樘(1470年7月30日-1505年6月9日),或称弘治帝,是明宪宗皇三子。明朝第10代皇帝(1487年-1505年在位),他在位18年,年号弘治。孝宗“恭俭有制,勤政爱民”,又能信用贤臣、广开言路,
  • 平原县平原县位于中国山东省西北部,是德州市下辖的一个县。三国时期刘备曾为平原县令;唐时一代书法家颜真卿曾任平原郡太守,抗击安禄山叛军。清光绪二十五年(1899年),山东义和团领袖朱红
  • 马克斯·泰格马克马克斯·埃里克·泰格马克(英语:Max Erik Tegmark,1967年5月5日-),宇宙学家,拥有美国与瑞典双重国籍。他现为麻省理工学院教授、基础问题研究所(英语:Foundational Questions Institu
  • 那珂市那珂市(日语:那珂市/なかし  */?)是位于茨城县北部的一市。设立于2005年(平成17年)1月21日,由那珂郡那珂町及同郡瓜连町编入合并,市制施行成立。
  • 双官能团化合物双官能团化合物是指含有两个官能团的有机化合物,这类化合物的化学反应通常可以体现在两个官能团上。有两个或两个以上官能团的有机化合物也称多官能团化合物。MOF材料的双官