Lua 如何過載運算子

2021-10-24 01:21:45 字數 902 閱讀 2247

我們都知道在c++中,可以通過過載運算子來實現**的簡練。在lua中我們也可以實現類似的操作。先舉個例子:

local cood =

function cood:

new(x,y)

local o =

setmetatable

(o,self)

o.x = x

o.y = y

return o

endcood.

__add

=function

(a,b)

local x = a.x+b.x

local y = a.y+b.y

return cood:

new(x,y)

endlocal a = cood:

new(1,

2)local b = cood:

new(3,

4)local c = a+b

print

(c.x,c.y)

可以看到,我們通過過載」+」運算子來實現了兩個物件的簡單相加,輸出如下:

4

6

除了」+」運算子之外,lua還提供一下的運算子讓我們過載

__add: 對+進行過載

__sub: 對-進行過載

__mul: 對*進行過載

__div: 對/進行過載

__unm: 對相反數進行過載

__mod: 對%進行過載

__pow: 對^進行過載

__concat: 對連線操作符進行過載

__eq: 對==進行過載

__lt: 對《進行過載

__le: 對<=進行過載

在以後的編碼中,我們就可以利用運算子的過載,來簡化一些操作了。

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...