operator 是 C++ 的(運算符的)重載操作符。用作擴展運算符的功能。 它和運算符一起使用,表示一個運算符函數,理解時應將 【operator+運算符】 整體上視為一個函數名。 要註意的是:一方面要使運算符的使用方法與其原來一致,另一方面擴展其功能只能通過函數的方式(c++中,“功能”都是由 ...
operator 是 C++ 的(運算符的)重載操作符。用作擴展運算符的功能。
它和運算符一起使用,表示一個運算符函數,理解時應將 【operator+運算符】 整體上視為一個函數名。
要註意的是:一方面要使運算符的使用方法與其原來一致,另一方面擴展其功能只能通過函數的方式(c++中,“功能”都是由函數實現的)。
使用時:
【返回類型】 【operator+運算符】 (const ElemType&a)const {...}
為什麼需要重載操作符?
系統的所有操作符,一般情況下,只支持基本數據類型和標準庫中提供的class。
而針對用戶自己定義的類型,如果需要其支持基本操作,如’+’,‘-’,‘*’,‘/’,‘==’等等,則需要用戶自己來定義實現(重載)這個操作符在此新類型的具體實現。
例:
創建一個point類並重載‘+’,‘-’運算符;
struct point { double x; double y; point() {}; //初始化 point(double a,double b) { x = a; y = b; }; //重載+運算符 point operator + (const point& a) const { return point (x+ a.x, y+ a.y); } //重載-運算符 point operator - (const point& a)const { return point(x-a.x, y-a.y); } };
檢驗;
int main() { point w(2, 6), v(5, 3); printf("w與v的坐標分別為:\n"); printf("w = (%.2f, %.2f)\nv = (%.2f, %.2f)\n", w.x, w.y, v.x, v.y); point z = w+ v; printf("w+v 的值z = (%.2f, %.2f)\n", z.x, z.y); z = w- v; printf("w-v 的值z = (%.2f, %.2f)\n", z.x, z.y); return 0; }
檢驗結果;
end;