运算符重载

✍ dations ◷ 2025-11-18 11:47: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;}

分类

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

支持运算符重载的语言:

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

相关

  • 趋性趋性(英语:taxis,或称为趋向性)是一生物(或细胞)天生的行为反应,指其对一指向性刺激(由特定方向给的刺激),而会有趋进(正趋性)或远离(负趋性)刺激源的动作。趋性和向性不同,生物的
  • 化学品化学物质,又称化学物种,是有着固定化学成分和特定性质的一类物质。它们不能通过物理手段分成更小的组分。化学物质可以是以元素形态组成的单质,也可以是化合物、离子或者合金。
  • 1900年1900年美国人口普查(英语:1900 United States Census)是美国历史上第12次全国人口普查,确定了美国的常住人口为75,994,575人,相比1890年美国人口普查,同比增长为21.0%。1900年的人
  • 资产管理资产管理(英语:Asset management),又称投资管理(英语:Investment management),是一项针对证券及资产的金融服务,以投资者利益出发并达致投资目标。投资者的范围非常广泛,可以是机构譬
  • 高雄山神护寺(日语:神護寺/じんごじ Jingo-ji)是位在日本京都府京都市右京区的寺院,高野山真言宗遗迹本山。山号“高雄山”(たかおさん)。本尊药师如来、开基(创立者)为和气清麻吕。别称“
  • 刘家峡水电站刘家峡水电站位于中国甘肃省永靖县境内黄河干流上。水电站以发电为主,兼有防洪、灌溉、防凌、供水、航运、养殖等效益。刘家峡水电站控制流域面积18.2万平方公里,多年平均流量
  • 思科系统思科系统(英语:Cisco Systems, Inc.;NASDAQ:CSCO,港交所:4333)是一间跨国际综合技术企业,总部设于加州硅谷。思科开发、制作和售卖网络硬件(英语:Networking hardware)、软件、通信设备
  • 那空那育府那空那育府(泰语:จังหวัดนครนายก,皇家转写:Changwat Nakhon Nayok,泰语发音:),一译坤西育府,是泰国中部的一个府。那空那育府是一个有九百多年历史的古老城市,在大城时
  • 链变链变,也称链式音移、链式音变、链移(英语:chain shift,chaining,enchainment)是一个历史音系学概念,指一系列相互联系的、涉及几个音段(通常是元音)全部改变其语音现实的复杂音系变化
  • 李景纲李景纲(1864年5月1日-1930年8月16日,同治三年三月二十六日亥时-民国十九年夏历闰六月二十二日酉时),字弍忠,直隶省枣强县人,清朝政治人物、进士出身。光绪二十九年癸卯科举人,光绪三