为什么如果(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)。你使用什么编译器? –