減法,乘法,除法在運算過程中,都是先將運算元,轉成數值,再進行後續操作,而加法,卻有所不一樣。
當兩個數值相加時,加法運算子,跟減法操作符一樣,直接求和。
var a = 1
var b = 2
a + b // 3
當兩個字串相加時,加法運算子,這表現為字串拼接。
var a = '1'
var b = '2'
a + b // '12'
注意:只有有乙個運算元為,字串,都視為字串拼接,另乙個運算元,也會先轉成字串
true + false // 1
true + null // 1
true + undefined // nan
null + undefined // nan
如果運算元是乙個物件,必須先將其轉成乙個原始型別,再相加
var obj =
obj + 2 // '[object object]2'
上面**中,物件obj轉成原始型別的值為[object object],再與2相加就得到了上面的結果。
物件轉成原始型別的值,規則如下:
首先自動呼叫物件的valueof方法
var obj =
}obj + 2 // 3
再呼叫tostring方法,將其轉化為字串
var obj = ;
obj.valueof().tostring() // "[object object]"
這裡有乙個特例,如果運算元是乙個date物件的例項,那麼會優先執行tostring方法
var obj = new date();
obj.valueof = function () ;
obj.tostring = function () ;
obj + 2 // "hello2"
二元運算子過載
siwuxie095 二元運算子過載 所謂 二元運算子,即 這個符號與兩個運算元進行運算 1 加號 的過載 加號 的過載方式有兩種 一種是友元函式過載,一種是成員函式過載 1 先來看成員函式過載,如下 定義乙個座標類 coordinate 在類中宣告成員函式 operator 它的引數是 const...
C 二元運算子過載
二元運算子需要兩個引數,下面是二元運算子的例項。我們平常使用的加運算子 減運算子 乘運算子 和除運算子 都屬於二元運算子。就像加 運算子。下面的例項演示了如何過載加運算子 類似地,您也可以嘗試過載減運算子 和除運算子 include using namespace std class box voi...
部分二元運算子的運算規則
整數運算 如果兩個運算元有乙個為long,則結果為long。沒有long時,結果為int,即使運算元全為byte,short,結果也是int。浮點運算 如果兩個運算元有乙個為double,則結果為double。只有兩個運算元都為float,結果才為float。浮點數預設為double。浮點數不精確,...