【发布时间】:2012-02-26 10:32:17
【问题描述】:
Horstmann’s C++ pitfalls 在谈论流时解决了一个有趣的问题。引用他的话:
使用转换为
void*,而不是转换为int或bool,来实现产生真值的对象。与int或bool不同,void*除了==比较之外没有任何合法操作。
作为一名程序员,如果某个函数在我期望一个布尔值时返回 void*,我会感到困惑。 Horstmann 提供了一个示例,其中使用 void* 而不是 bool 似乎是合适的。它总是可取的吗?
【问题讨论】:
-
当是好主意时是可取的,当是坏主意时是不可取的。你期待什么样的答案?
-
@KerrekSB:案例,例子,为了能够区分好的做法和坏的做法,我现在有点困惑。为什么我们不总是这样做?我们为什么不直接
typedef void* secure_bool -
Horstmann 谈论的是转换运算符,而不是返回类型。你的问题毫无意义。
-
@ildjarn :声明
Unlike int or bool, void* have no legal operations other than == comparison是我所指的,无论转换如何。
标签: c++ boolean void-pointers