运算符重载

✍ dations ◷ 2025-09-10 15:31: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;}

分类

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

支持运算符重载的语言:

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

相关

  • 讯号产生器信号发生器,通常细分为函数信号发生器、任意波形发生器、射频微波信号发生器、逻辑信号形发生器等等,是一个用于产生重复或不重复的电子信号(模拟或数字电子技术领域均可)的电子
  • 鸟神星鸟神星(英语:Makemake/Maha-Maha,发音为:/ˌmɑːkiːˈmɑːkiː/ MAH-kee-MAH-kee或/ˌmɑːkeɪˈmɑːkeɪ/ MAH-kay-MAH-kay),正式名称为 (136472) Makemake,是太阳系内已知的
  • 1822年1822年逝世人物列表:1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月
  • M113M113是一种美国生产的装甲运兵车,外销世界上诸多国家,以便宜好用、改装方便著称于世,在近代军事史有重要地位。M113采用全履带配置并有部分两栖能力,也有越野能力,在公路上可以高
  • 威廉·福克斯威廉·福克斯爵士(Sir William Fox,1812年1月20日-1893年6月23日),KCMG,新西兰著作家和政治家,他关于争取新西兰自治的著作,促成《1852年宪法法案》,使新西兰获得自治。1842年移居新
  • 资江资水又称资江,湖南四水之一,长江的主要支流。资水分南源与西源,主源为南源即夫夷水,源于广西壮族自治区的资源县,流经资源、湖南新宁、邵阳等县市。西源为赧水,源于城步苗族自治县
  • 河南科技大学河南科技大学是位于中国河南省洛阳市的一所大学,前身是1952年创建的洛阳工学院。2002年,河南省委、省政府为了优化省内高等教育结构布局,组建了以工科为主的综合性大学:河南科技
  • 府 (行政区划)府是东亚的一种行政区划单位。中国自唐朝至民国初年,设置的二级行政区划单位称作“府”,相当于中华人民共和国的地级。同属东亚文化圈中的日本和韩国则使用“府”作为一级行政
  • 马里奥·平托·德安德拉德马里奥·平托·德安德拉德(葡萄牙语:Mário Pinto de Andrade,1928年-1990年)是安哥拉左翼政治人物,诗人,安哥拉共产党创始人之一。1928年出生于葡属西非上戈隆戈。1948年前往里斯
  • 丰隆亚洲丰隆亚洲有限公司,简称丰隆亚洲(英语:Hong Leong Asia Limited,SGX:H22),在1941年由郭芳枫在新加坡创立。现时由郭令明为主席,以及总裁陈树田主理。现时在新加坡、中国等国家经营消