运算符重载

✍ dations ◷ 2025-12-05 17:53:02 #多态,计算机编程

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

分类

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

支持运算符重载的语言:

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

相关

  • 普通语言学普通语言学又称做一般语言学,是对人类语言的看法和研究结果的理论概括,是研究语言的本质、发展和起源以及语言的类型和分类的语言学分支学科。普通语言学有广义和狭义之分。广
  • 黄泉黄泉,出自儒教经典《左传》中郑伯克段于鄢的故事,郑庄公说待其死后将与母亲在黄泉相见。后在汉字文化圈中用于指人死后所居住的地方。因打井至深时地下水呈黄色,又人死后埋于地
  • 伊朗人质危机所有人质于阿尔及尔协议(英语:Algiers Accords)后释放伊朗伊朗人质危机(英语:Iran hostage crisis,波斯语:تسخیر لانه جاسوسی امریکا)或称伊朗人质事件,为1979
  • 芦洲坐标:25°5′5.24″N 121°28′26.2″E / 25.0847889°N 121.473944°E / 25.0847889; 121.473944芦洲区(台湾话:.mw-parser-output .sans-serif{font-family:-apple-system,Bl
  • 大斜方截半二十面体在几何学中,大斜方截半二十面体(英语:Great rhombicosidodecahedron)又称为截角截半二十面体(英语:Truncated icosidodecahedron)是一种半正多面体,由于其具有点可递的性质,因此属于
  • 冬季奥林匹克运动会冬季两项比赛冬季奥林匹克运动会冬季两项比赛目前有11小项的比赛。冬季两项在美国斯阔谷举办的1960年冬季奥林匹克运动会正式列入比赛项目,项目为男子个人赛(20公里)。1968年加入男子接力赛
  • 幽灵火箭幽灵火箭(瑞典语:Spökraketer),又称鬼魂火箭或者斯堪的纳维亚火箭,是1946年大量出现在瑞典及其附近国家上空的火箭和导弹形状不明飞行物。记录显示,1946年2月26日,一名芬兰观察者
  • 小煤炱属小煤炱属(学名:) 为真菌界小煤炱目小煤炱科下的属。
  • 川上眉山川上眉山(1869年3月5日-1908年6月15日),出生于大日本帝国大阪,日本近代知名作家。川上眉山出生时,家庭已经被父亲欠了巨额债务。 他成长于日本明治维新晚期,社会矛盾日益突然,文学上
  • 轨道太阳天文台轨道太阳天文台(Orbiting Solar Observatory,简称OSO)是美国观测太阳的一系列太空望远镜计划,主要的目的是研究太阳,也包括一些与太阳无关的实验。在1962年至1975年间,美国国家航