飛 鼠
7 years ago
原來==跟!=可以各自被overload成不相干的東西喔...
latest #29
草食翔@ = U =
7 years ago
什麼語言那麼噁…
飛 鼠
7 years ago
C++, 我還以為!=是強制定義成!( a == b ),不過我看到有人還特地手刻了這段...
關鍵對話逢
7 years ago
重新定義運算子 hen好用內
立即下載
草食翔@ = U =
7 years ago
原來C#也行....
Ddavid
7 years ago
近代高階語言有這能力的應該不少了吧?
草食翔@ = U =
7 years ago
從來沒有用過
Ddavid
7 years ago
seanysYX: 那表示你蠻少用到讓自訂class具備類似基礎運算,不過反正也不一定要用
Ddavid
7 years ago
Javascript果然是沒有,但是有限定的招數可在特定情況使用XD
Javascript: operator overloading
showian
7 years ago
可是overload成完全不相干…是很想永遠當owner嗎
showian
7 years ago
通常是用來比class instances?
飛 鼠
7 years ago
showian48: 我看到的code他==跟!=是互補的啦,不過想到這兩個東西可以各自重新定義就覺得超容易出問題的...
夜之楓
7 years ago
印象中全部運算子都可以"胡亂"重新定義?
Ddavid
7 years ago
mapleinwind: 印象中除了至少要符合該運算子原本的運算元個數以外好像大多可以。
我倒是不曉得C++有沒有能力重定義?:運算子XD。查了一下,不可以。下面有列出可以的所有運算子。
operator overloading - cppreference.com
飛 鼠
7 years ago
所以> < >= <= == !=都可以有不同的定義,很好
Ddavid
7 years ago
C++20以後連中小括號都可以重定義XD
草食翔@ = U =
7 years ago
scott790902: 我覺得很怕
Ddavid
7 years ago
逗點運算子都可以重定義,雖然到底什麼情況會想重定義這個XD
好吧,我想到一個,是把逗點運算子做為自動收集集合元素使用
Ddavid
7 years ago
seanysYX: 其實這沒有你想像中可怕啊,事實上就是只要你想讓你的class具備這些基礎運算的話,自訂運算子本來就是必要的啊。
飛 鼠
7 years ago
大概是為了那些覺得數字一定要是1,000,000這種格式的人開放重新定義 , 的吧...
草食翔@ = U =
7 years ago
我怕的不是那個功能,我怕的是拿來"愉快"使用的人吧.....
Ddavid
7 years ago
seanysYX: 你仔細想一下,除了你直接接手他的code以外,其實大多數情況下他影響不到你
草食翔@ = U =
7 years ago
DdavidCh: 也就怕這個阿.......還有就是三個月前的自己
Ddavid
7 years ago
seanysYX: 你會怕就表示你不會去用它啦。
而且事實上你老早就在用這類東西了,只是你沒自覺。
string的+哪來的?cout怎麼可以用<<餵東西,<<不是位移運算子嗎?
草食翔@ = U =
7 years ago
<<其實我沒有用過就是了
不過string 的+倒是常常用就是了XD
Ddavid
7 years ago
所有class庫的說明都會把可用的運算子列出來,貪快又怕忘就乖乖第一次寫時像各大class庫說明那樣把可用運算子全列出來吧XD
Ddavid
7 years ago
seanysYX: <<沒用過的話應該是很少用stream方式做I/O吧。
字串相關運算的話,C時代可是要呼叫strxxx系列函數對字元陣列慢慢拼裝比對XD
夜之楓
7 years ago
感謝資料支援!原來 ? : 不能重新定義XD
Ddavid
7 years ago
mapleinwind: 少數的三元運算子,能重定義的話真的太過花式XD
back to top