爲什麼如果(var)...使用數字轉換而不是布爾值? 我有一個同時實現了一類:「if(var)」使用數字轉換而不是布爾值
operator int() { ....}
operator bool() { ....}
,但如果我使用:
if (my_class_var) ....;
那麼int
轉換是用來代替boolean
!?!編輯: 由於versedmarald說這是正確的。我發現有什麼不同..我實際上用的是:
operator int() { ....}
operator bool() const { ... }
還是着迷了,爲什麼不同? gcc版本4.6.2
不知道答案,但只是我的好奇心:它如果通過強制轉換使用bool(例如'if((bool)my_var)')? – nico
你確定嗎?如果你說的是真的,那聽起來像是一個編譯器錯誤。 Visual C++使用'運算符bool()'轉換。 –
Atleast [gcc-4.3.4使用bool運算符重載](http://ideone.com/Ko3Vn)。你使用什麼編譯器? –