热门问题
时间线
聊天
视角

運算符重載

来自维基百科,自由的百科全书

Remove ads

在計算機程序設計中,運算符重載(英語:operator overloading)是多態的一種。這裡,運算符(比如+===)被當作多態函數,它們的行為隨着其參數類型的不同而不同。運算符並不一定總是符號。

簡介

運算符重載通常只是一種語法糖[1]。它可以簡單地通過函數調用來模擬:

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;
}

分類

Remove ads

注釋與引用

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads